pyqt5多线程编程
时间: 2023-08-23 18:08:04 浏览: 122
PyQt5是一个用于创建图形用户界面(GUI)的Python库,它也支持多线程编程。多线程编程可以帮助我们在GUI应用程序中处理耗时的任务,以避免阻塞用户界面。
在PyQt5中使用多线程,可以使用Python的`threading`模块。下面是一个简单的例子,展示了如何在PyQt5中使用多线程:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
class WorkerThread(QThread):
finished = pyqtSignal() # 自定义信号,用于通知任务完成
def run(self):
# 在这里执行耗时的任务
# ...
self.finished.emit() # 发送任务完成的信号
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("多线程示例")
self.setGeometry(100, 100, 300, 200)
self.button = QPushButton("开始任务", self)
self.button.setGeometry(100, 60, 100, 30)
self.button.clicked.connect(self.startTask)
def startTask(self):
self.button.setEnabled(False) # 禁用按钮
self.thread = WorkerThread()
self.thread.finished.connect(self.taskFinished)
self.thread.start()
def taskFinished(self):
self.button.setEnabled(True) # 启用按钮
print("任务完成")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个例子中,我们创建了一个`WorkerThread`类,继承自`QThread`。在`run`方法中执行耗时的任务,并通过自定义的`finished`信号通知任务完成。
在`MainWindow`类中,我们创建了一个按钮,点击按钮后会禁用按钮并启动一个新的线程来执行任务。当任务完成时,通过连接到`taskFinished`槽函数,重新启用按钮并打印一条消息。
这只是一个简单的示例,你可以根据需求进行扩展和修改。希望对你有帮助!
阅读全文