我有一个用 Python 编写的多线程应用程序,其中一个线程“负责”GUI,另一个线程是工作线程。然而,工作线程有两个主要功能(或者说两个主要工作),我需要告诉运行功能到底要做什么。
所以我的想法是在工作线程中创建一个运行函数,它将采用一个参数(“self”除外)。参数将是“创建”或上传。事不宜迟,这里有点 -我到目前为止的代码:
图形界面.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()
worker .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() 方法,但是“使用 PyQT 进行快速 GUI 开发”告诉我从不直接调用 worker.run(),并且始终使用 worker.start ().
最佳答案
QThread
的start
方法不接受参数。但是,您继承了 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
关于python - 在 PyQt 中启动 new QThread() 时传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7864664/