pyqt5类的函数中创建线程
时间: 2023-09-06 11:10:31 浏览: 108
在 PyQt5 中,可以使用 QThread 类来创建线程。下面是一个示例代码,展示了如何在 PyQt5 类的函数中创建线程:
```python
from PyQt5.QtCore import QThread, pyqtSignal
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建按钮和标签
self.btn = QPushButton('Start', self)
self.label = QLabel('Waiting for thread...', self)
self.label.move(50, 50)
self.btn.move(50, 100)
# 绑定按钮点击事件
self.btn.clicked.connect(self.startThread)
def startThread(self):
# 创建线程实例
self.thread = MyThread()
# 绑定信号和槽函数
self.thread.finished.connect(self.displayResult)
self.thread.progress.connect(self.updateProgress)
# 启动线程
self.thread.start()
def displayResult(self):
self.label.setText('Thread finished!')
def updateProgress(self, value):
self.label.setText('Progress: %d%%' % value)
class MyThread(QThread):
progress = pyqtSignal(int)
def run(self):
# 执行耗时操作
for i in range(1, 101):
self.progress.emit(i)
time.sleep(0.1)
# 发送 finished 信号
self.finished.emit()
```
在上面的代码中,MyWidget 类继承自 QWidget 类,包含一个按钮和一个标签。当用户点击按钮时,会创建一个 MyThread 类的实例并启动它。MyThread 类继承自 QThread 类,重写了 run() 方法,在该方法中执行耗时操作,并通过 progress 信号发送进度信息。当线程结束时,会发送 finished 信号。MyWidget 类还定义了两个槽函数 displayResult() 和 updateProgress(),分别用于显示线程结束和进度信息。在 startThread() 函数中,将 progress 和 finished 信号与槽函数绑定,并启动线程。
阅读全文