pyqt 线程运行结束
时间: 2023-10-24 12:37:46 浏览: 111
PyQt5多线程的执行和停止
在 PyQt 中,你可以使用 QThread 类来创建线程,并且可以通过信号和槽机制来实现线程与主线程之间的通信。下面是一个简单的示例代码:
```python
import sys
import time
from PyQt5.QtCore import QThread, pyqtSignal, QTimer
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel
class WorkerThread(QThread):
finished = pyqtSignal()
def __init__(self, parent=None):
super(WorkerThread, self).__init__(parent)
def run(self):
# 执行耗时操作
time.sleep(5)
self.finished.emit()
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.label = QLabel("等待线程结束")
self.setCentralWidget(self.label)
self.worker_thread = WorkerThread()
self.worker_thread.finished.connect(self.on_worker_finished)
self.worker_thread.start()
def on_worker_finished(self):
self.label.setText("线程已结束")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例中,我们创建了一个 WorkerThread 类来执行耗时操作,并在操作结束后发出 finished 信号。在主窗口中创建了一个 QLabel 控件来显示线程状态,然后在构造函数中创建了一个 WorkerThread 对象,并连接了 finished 信号到槽函数 on_worker_finished 中。最后启动了线程并显示主窗口。
当线程执行结束后,会发出 finished 信号,主窗口中的 on_worker_finished 槽函数会被调用,更新 QLabel 控件的文本。
阅读全文