【发布时间】:2016-08-10 21:15:18
【问题描述】:
在运行我的代码时,我会启动一个运行大约 50 秒的线程并执行大量后台操作。如果我运行这个程序然后很快关闭它,这些东西仍然会在后台运行一段时间,因为线程永远不会死。如何在我的 MianWindow 类的 closeEvent 方法中优雅地终止线程?我尝试设置一个名为 exit() 的方法,在相关线程中创建一个信号“quitOperation”,然后尝试使用
myThread.quitOperation.emit()
我希望这会在我的线程中调用我的 exit() 函数,因为我的构造函数中有这一行:
self.quitOperation.connect(self.exit)
但是,当我使用第一行时,它会中断,说“myThread”没有属性“quitOperation”。为什么是这样?有没有更好的办法?
【问题讨论】:
-
请显示定义你的线程类的代码(包括信号定义)
-
一般来说,提供 SSCCE 会带来更快的帮助:解决一个最小的完整工作示例要容易得多。见sscce.org。
标签: python multithreading pyqt pyqt4 qthread