pyqt5线程结束后弹窗提示
时间: 2023-10-24 21:22:07 浏览: 147
pyqt5线程与弹窗示例
可以在线程结束后,通过信号槽机制,发送一个信号到主线程,再由主线程弹出提示框。
以下是一个简单的示例代码:
```python
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMessageBox
import sys
import time
class WorkerThread(QThread):
finished = pyqtSignal()
def run(self):
# 模拟耗时的任务
time.sleep(5)
self.finished.emit()
class MainWindow(QMessageBox):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.setGeometry(500, 500, 300, 200)
# 创建子线程并连接信号槽
self.thread = WorkerThread()
self.thread.finished.connect(self.show_message_box)
# 开始执行子线程
self.thread.start()
def show_message_box(self):
self.setText("任务已完成!")
self.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
```
在上面的代码中,`WorkerThread` 类继承自 `QThread`,实现了 `run()` 方法,这个方法会在子线程中执行。在 `run()` 方法中,我们模拟了一个耗时的任务,当任务执行完毕后,通过 `finished` 信号发送给主线程。
在 `MainWindow` 类中,我们创建了一个子线程,并连接了 `finished` 信号到 `show_message_box()` 方法。这个方法会在主线程中执行,弹出一个提示框,告诉用户任务已完成。
最后,我们创建了一个 `QApplication` 实例,并启动了主界面。当程序运行时,主界面会弹出一个提示框,告诉用户任务已完成。
阅读全文