QObject e QThread: movendo "workers" para threads separadas
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import sys
|
||||
import time
|
||||
|
||||
from PySide6.QtCore import QObject, Signal, Slot
|
||||
from PySide6.QtCore import QObject, QThread, Signal
|
||||
from PySide6.QtWidgets import QApplication, QWidget
|
||||
from ui_workerui import Ui_myWidget
|
||||
|
||||
@@ -11,7 +11,7 @@ class Worker1(QObject):
|
||||
progressed = Signal(str)
|
||||
finished = Signal(str)
|
||||
|
||||
def run(self):
|
||||
def doWork(self):
|
||||
value = '0'
|
||||
self.started.emit(value)
|
||||
for i in range(5):
|
||||
@@ -30,13 +30,78 @@ class MyWidget(QWidget, Ui_myWidget):
|
||||
self.button2.clicked.connect(self.hardWork2)
|
||||
|
||||
def hardWork1(self):
|
||||
self.label1.setText('1 terminado')
|
||||
self._worker = Worker1()
|
||||
self._thread = QThread()
|
||||
|
||||
worker = self._worker
|
||||
thread = self._thread
|
||||
|
||||
# Mover o worker para a thread
|
||||
worker.moveToThread(thread)
|
||||
|
||||
# Run
|
||||
thread.started.connect(worker.doWork)
|
||||
worker.finished.connect(thread.quit)
|
||||
|
||||
thread.finished.connect(thread.deleteLater)
|
||||
worker.finished.connect(worker.deleteLater)
|
||||
|
||||
worker.started.connect(self.worker1Started)
|
||||
worker.progressed.connect(self.worker1Progressed)
|
||||
worker.finished.connect(self.worker1Finished)
|
||||
|
||||
thread.start()
|
||||
|
||||
def worker1Started(self, value):
|
||||
self.button1.setDisabled(True)
|
||||
self.label1.setText(value)
|
||||
print('worker iniciado')
|
||||
|
||||
def worker1Progressed(self, value):
|
||||
self.label1.setText(value)
|
||||
print('em progresso')
|
||||
|
||||
def worker1Finished(self, value):
|
||||
self.label1.setText(value)
|
||||
self.button1.setDisabled(False)
|
||||
print('worker finalizado')
|
||||
|
||||
def hardWork2(self):
|
||||
for i in range(5):
|
||||
print(i)
|
||||
time.sleep(1)
|
||||
self.label2.setText('2 terminado')
|
||||
self._worker2 = Worker1()
|
||||
self._thread2 = QThread()
|
||||
|
||||
worker = self._worker2
|
||||
thread = self._thread2
|
||||
|
||||
# Mover o worker para a thread
|
||||
worker.moveToThread(thread)
|
||||
|
||||
# Run
|
||||
thread.started.connect(worker.doWork)
|
||||
worker.finished.connect(thread.quit)
|
||||
|
||||
thread.finished.connect(thread.deleteLater)
|
||||
worker.finished.connect(worker.deleteLater)
|
||||
|
||||
worker.started.connect(self.worker2Started)
|
||||
worker.progressed.connect(self.worker2Progressed)
|
||||
worker.finished.connect(self.worker2Finished)
|
||||
|
||||
thread.start()
|
||||
|
||||
def worker2Started(self, value):
|
||||
self.button2.setDisabled(True)
|
||||
self.label2.setText(value)
|
||||
print('worker 2 iniciado')
|
||||
|
||||
def worker2Progressed(self, value):
|
||||
self.label2.setText(value)
|
||||
print('2 em progresso')
|
||||
|
||||
def worker2Finished(self, value):
|
||||
self.label2.setText(value)
|
||||
self.button2.setDisabled(False)
|
||||
print('2 worker finalizado')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user