将pyqt5ui界面分为多线程任务
时间: 2023-07-29 08:07:49 浏览: 139
将 PyQt5 UI 界面分为多线程任务可以通过使用 Python 的 `threading` 模块来实现。以下是一个简单的示例代码,演示了如何在 PyQt5 应用程序中使用多线程任务:
```python
import sys
import time
import threading
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.label = QLabel('Waiting for task to finish...', self)
self.setCentralWidget(self.label)
self.thread = threading.Thread(target=self.do_task)
self.thread.start()
def do_task(self):
time.sleep(5) # 模拟耗时任务
self.label.setText('Task is finished.')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在上面的示例代码中,我们创建了一个 `MainWindow` 类,它继承自 `QMainWindow`。在 `MainWindow` 的构造函数中,我们创建了一个 `QLabel` 对象,并将其设置为中心窗口小部件。然后,我们创建了一个新的线程对象,并将其目标设置为 `do_task` 方法。最后,我们启动线程。
在 `do_task` 方法中,我们模拟了一个耗时任务,即睡眠了 5 秒钟,然后将标签文本设置为“任务已完成”。
当我们运行这个示例代码时,我们会看到一个窗口出现,上面显示着“等待任务完成”的文本。然后,5 秒钟后,文本变为“任务已完成”。在这个过程中,我们的应用程序仍然可以响应用户的输入,因为任务正在另一个线程中运行。
阅读全文