gpt4 book ai didi

python - 在 PyQt 中启动 new QThread() 时传递参数

转载 作者:太空狗 更新时间:2023-10-30 02:05:54 27 4
gpt4 key购买 nike

我有一个用 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 ().

最佳答案

QThreadstart 方法不接受参数。但是,您继承了 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com