我有一个程序,它通过我用PyQt编写的图形用户界面与我正在使用的收音机接口。显然,无线电的主要功能之一是传输数据,但要连续这样做,我必须循环写入,这会导致gui挂起。因为我从来没有处理过线程,所以我尝试使用QCoreApplication.processEvents().来摆脱这些挂起,不过无线电需要在两次传输之间休眠,所以gui仍然会根据这些休眠持续的时间而挂起。
有没有使用QThread解决这个问题的简单方法?我一直在寻找关于如何使用PyQt实现多线程的教程,但它们中的大多数都涉及设置服务器,而且比我需要的要高级得多。老实说,我甚至不需要我的线程在运行时更新任何东西,我只需要启动它,让它在后台传输,然后停止它。
发布于 2011-07-22 19:18:47
我创建了一个小示例,展示了处理线程的三种不同且简单的方法。我希望它能帮助你找到解决问题的正确方法。
发布于 2015-10-31 23:13:41
请接受为PyQt5,Python3.4更新的答案
使用此模式启动一个worker,该worker不接受数据并在表单可用时返回数据。
1- Worker类变得更小,放在自己的文件worker.py中,便于记忆和独立的软件重用。
2- main.py文件是定义图形用户界面窗体类的文件
3-线程对象没有子类化。
4-线程对象和worker对象都属于Form对象
5-程序的步骤在注释中。
主文件是:
发布于 2014-02-27 13:50:45
来自Matt的非常好的示例,我修复了拼写错误,并且pyqt4.8现在很常见,所以我也删除了虚拟类,并为dataReady信号添加了一个示例
https://stackoverflow.com/questions/6783194
复制相似问题