在使用QThread进行子线程之间的数据传输时,可以通过以下步骤实现:
下面是一个示例代码:
from PyQt5.QtCore import QThread, pyqtSignal
# 自定义线程类
class MyThread(QThread):
# 定义信号,传递数据
data_transferred = pyqtSignal(str)
def run(self):
# 子线程任务逻辑
data = "Hello from sub-thread"
# 发送数据
self.data_transferred.emit(data)
# 主线程
if __name__ == "__main__":
# 创建自定义线程实例
thread = MyThread()
# 连接信号与槽函数
thread.data_transferred.connect(lambda data: print(data))
# 启动线程
thread.start()
在上述示例中,自定义线程类MyThread继承自QThread,并定义了一个data_transferred信号。在run()方法中,我们可以执行子线程的任务逻辑,并通过emit()方法发送数据。
在主线程中,我们创建了MyThread的实例,并通过connect()方法将data_transferred信号连接到一个槽函数,这里使用lambda表达式打印接收到的数据。最后,通过start()方法启动线程。
这样,当子线程执行完任务后,会通过data_transferred信号将数据传递给主线程,主线程中的槽函数会接收到数据并进行处理。
注意:在使用QThread进行数据传输时,需要注意线程间的数据同步和线程安全问题,避免出现竞态条件等并发问题。
领取专属 10元无门槛券
手把手带您无忧上云