我在Windows上的PyQt中編寫了一個GUI程序。我的程序中有一些昂貴的操作。在這些操作正在運行時,程序在程序欄中顯示「Not Responding」。QThread Windows沒有響應
我覺得一定是這個操作阻塞了主線程來更新UI,所以我編寫了多線程代碼,通過QThread來測試它,它仍然沒有意義。
我寫了一個小程序來測試它的操作沒有在新的線程中運行的所有,這是我的小測試代碼:
from PyQt5.QtCore import QThread, QObject, QCoreApplication, qDebug, QTimer class Worker(QObject): def on_timeout(self): qDebug('Worker.on_timeout get called from: %s' % hex(int(QThread.currentThreadId()))) if __name__ == '__main__': import sys app = QCoreApplication(sys.argv) qDebug('From main thread: %s' % hex(int(QThread.currentThreadId()))) t = QThread() qDebug(t) worker = Worker() timer = QTimer() timer.timeout.connect(worker.on_timeout) timer.start(1000) timer.moveToThread(t) worker.moveToThread(t) t.start() app.exec_()
這裏是輸出:
From main thread: 0x634 Worker.on_timeout get called from: 0x634
你試過我的回答嗎?如果您覺得它有用,請將其標記爲已接受(即單擊勾號符號)。 – ekhumoro