pyqt5 里子线程中的变量如何传到主线程
时间: 2023-08-11 11:12:41 浏览: 202
PyQt5多线程防卡死和多窗口用法的实现
5星 · 资源好评率100%
在 PyQt5 中,可以使用信号和槽机制将子线程中的变量传递到主线程。具体步骤如下:
1. 在子线程中定义一个信号,用于向主线程发送数据。
```python
from PyQt5.QtCore import QObject, pyqtSignal
class MyThread(QObject):
# 定义一个信号,带一个 str 参数
my_signal = pyqtSignal(str)
def run(self):
# 子线程中运行的代码
my_data = 'hello world'
# 发送信号,传递数据
self.my_signal.emit(my_data)
```
2. 在主线程中创建子线程对象,并连接子线程的信号到主线程的槽函数。
```python
from PyQt5.QtCore import QThread, QObject, pyqtSlot
class MyWindow(QObject):
def __init__(self):
super().__init__()
# 创建子线程对象
self.my_thread = MyThread()
# 连接子线程的信号到主线程的槽函数
self.my_thread.my_signal.connect(self.handle_data)
# 启动子线程
self.my_thread.start()
# 定义槽函数,用于接收子线程传递的数据
@pyqtSlot(str)
def handle_data(self, data):
print(data)
```
这样,在子线程中发送信号时,就会调用主线程中的槽函数,并将数据传递过来。注意,信号必须定义为 QObject 的子类,才能在子线程中使用。
阅读全文