PyQt5:从(非QT)线程刷新GUI

时间:2018-03-14 17:50:15

标签: python qt signals pyqt5 python-multithreading

我有一个PyQt5应用程序正在利用不同的类来收集数据(来自文件系统,psutil,串行链接......)并在PyQt5 GUI中对它进行汇总,这只是从我的主python运行的另一个类脚本。

所有非GUI类都是初始化非Qt感知的,并且正在完成他们的工作(在线程上共享/更新内部数据列表) from threading import Thread并且正在使用主窗口上的callable将他们的更新直接推送到GUI,使用了大量的setValue()&#39;:ahem ...这(非常)不好(我 knooOOoow < / em>,我学到了很难的方法:窗口在调整大小时崩溃了)

然后,我理解信号是非Qt类升级到最低限度的方式:QObject。然后我可以有dataReady = pyqtSignal(MyClass)稍后:self.dataReady.emit(self.myclasses[idx])当然,然后在GUI(QMainWindow)类中,我捕获/连接此信号:oneOfMyThreadedWorker.dataReady.connect(self.HandleThisMyClass)

这工作得很好....或者太棒了以至于我失去了对GUI的控制(没有响应?!)我认为它太忙了更新GUI,它不能再处理事件了?

因此.... 我怎样才能解决这个问题?我究竟做错了什么 ? QThread对象是(唯一的)方法吗?

0 个答案:

没有答案