我有一个用 Python 编写的多线程应用程序,其中一个线程“照顾”GUI,另一个线程是工作线程。但是,工作线程有两个主要函数(或者说两个主要作业),我需要告诉运行函数到底要执行哪个作业。
所以我的想法是在工作线程中创建一个运行函数,该函数将采用一个参数(除了“self”)。该参数要么是“create”,要么是上传。言归正传,这里是我编写的代码到目前为止:
GUI.py
class GUI(QMainWindow):
def __init__(self, parent=None):
super, etc
self.worker = worker.Worker()
def create(self):
self.worker.start()
def upload(self):
self.worker.start()
工人.py
class Worker(QThread):
def __init__(self, parent=None):
super, etc
def run(self):
self.create_data() # OR self.upload_data(), depends
所以问题是,我如何告诉worker.start()我希望它执行哪个功能?我意识到可以直接使用worker.run()方法,但“Rapid GUIdevelopment with PyQT”告诉我never直接调用worker.run(),并且始终使用worker.start()。
The start
的方法QThread
不接受争论。然而,你继承了QThread
所以你可以随意定制它。因此,要实现你想要的,只需将参数传递到构造函数中Worker
.
这是您的代码示例,稍作修改以显示其实际效果:
class Worker(QThread):
def __init__(self, do_create_data=True, parent=None):
super(QThread, self).__init__()
self.do_create_data = create_data
def run(self):
if self.create_data:
self.create_data()
else:
self.upload_data(), depends
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)