Метод start () PyQt5.QThread не выполняет метод run()
Я начинаю изучать PyQt5 и Qthread и пытаюсь сделать простую реализацию QThread, я знаю, что это очевидно, но я не могу понять, почему это не работает
мой код:
from PyQt5 import QtCore
class WorkingThread(QtCore.QThread):
def __init__(self):
super().__init__()
def run(self):
print(" work !")
class MainWindow(QtCore.QObject):
worker_thread = WorkingThread()
def engage(self):
print("calling start")
self.worker_thread.start()
if __name__ == "__main__":
main = MainWindow()
main.engage()
выход:
вызов начала
Процесс завершен с кодом выхода 0
нет работы!" печатные
1 ответ
Решение
Многим элементам Qt нужен корректный цикл событий для правильной работы, и в этом случае QThread, так как в этом случае нет графического интерфейса, уместно создать QCoreApplication:
from PyQt5 import QtCore
class WorkingThread(QtCore.QThread):
def run(self):
print(" work !")
class MainWindow(QtCore.QObject):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.worker_thread = WorkingThread()
def engage(self):
print("calling start")
self.worker_thread.start()
if __name__ == "__main__":
import sys
app = QtCore.QCoreApplication(sys.argv)
main = MainWindow()
main.engage()
sys.exit(app.exec_())