我在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