我已经尝试了尽可能多地阅读有关PyQt4的QThread和辅助线程的想法。我的问题是,而不是从构建的QThread类来运行一切都在它def run(self):
被blahblah.start()
命令是有办法创建具有,比如,个别线程类,4个功能,你只通话功能2,然后关闭后,线程权?
尽管经常使用子类化 [请参阅下面的评论]QThread
,但通常不鼓励这样做。
我认为,这是如何在pyqt中使用线程的一个很好的例子。您将创建一个Worker和一个Thread,其中Worker是某种类型的常规类,QObject
而Thread是QThread
您不子类化的。然后,您需要将Worker移至Threat并启动它。
self.worker = WorkerObject()
self.worker_thread = QtCore.QThread()
self.worker.moveToThread(self.worker_thread)
self.worker_thread.start()
在Worker内部,您基本上可以做任何您想做的事,它可以有任意多种方法,依此类推。
要记住的一件大事是,Worker需要与主循环分开。因此,这些方法不应返回主循环中使用的任何内容(最好根本不返回任何内容),并且应使用信号和插槽来收集Worker的结果。
self.button_start.clicked.connect(self.worker.startWork)
self.button_do_something_else.clicked.connect(self.worker.function2)
self.worker.signalStatus.connect(self.updateStatus)
还要确保不要在worker内部使用任何PyQt / GUI对象,因为这也会在Worker和通过PyQt本身的主循环之间架起一座桥梁。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句