import sys import time from PySide6.QtCore import QObject, QThread, Signal from PySide6.QtWidgets import QApplication, QWidget from ui_workerui import Ui_myWidget class Worker1(QObject): started = Signal(str) progressed = Signal(str) finished = Signal(str) def doWork(self): value = '0' self.started.emit(value) for i in range(5): value = str(i) self.progressed.emit(value) time.sleep(1) self.finished.emit(value) class MyWidget(QWidget, Ui_myWidget): def __init__(self, parent=None): super().__init__(parent) self.setupUi(self) self.button1.clicked.connect(self.hardWork1) self.button2.clicked.connect(self.hardWork2) def hardWork1(self): 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): 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__': app = QApplication(sys.argv) myWidget = MyWidget() myWidget.show() app.exec()