pyqt5 QThread传入列表数据
时间: 2023-05-28 17:03:39 浏览: 222
QThread资料
4星 · 用户满意度95%
在 PyQt5 中,使用 QThread 传递列表数据可以通过信号/槽机制来实现。
1. 定义一个继承自 QThread 的子类,例如 MyThread。
```python
from PyQt5.QtCore import QThread, pyqtSignal
class MyThread(QThread):
dataReady = pyqtSignal(list)
def __init__(self, data):
super().__init__()
self.data = data
def run(self):
# 在这里处理数据
result = self.processData(self.data)
self.dataReady.emit(result)
def processData(self, data):
# 处理数据的函数
# 返回处理后的结果
pass
```
2. 在主程序中创建 MyThread 的实例,并连接信号/槽。
```python
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.thread = MyThread([1, 2, 3])
self.thread.dataReady.connect(self.handleDataReady)
self.thread.start()
def handleDataReady(self, data):
# 处理接收到的数据
pass
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在 MyThread 中,定义了一个 dataReady 信号,用于传递处理后的数据。在 run 函数中,调用 processData 函数处理数据,并通过 dataReady 信号发送处理后的结果。在主程序中,创建 MyThread 的实例,并连接 dataReady 信号到 handleDataReady 槽函数,处理接收到的数据。通过调用 start 函数,启动线程的运行。
阅读全文