pyqt5获取当前子线程运行进度
时间: 2023-08-08 17:06:53 浏览: 49
在 PyQt5 中,可以通过信号与槽机制来获取子线程的运行进度。具体来说,可以在子线程中定义一个信号,用来传递当前的进度值;然后在主线程中定义一个槽函数,用来接收子线程发送的信号,更新进度条的显示。
以下是一个简单的示例代码:
```python
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar
class WorkerThread(QThread):
progress = pyqtSignal(int)
def run(self):
for i in range(1, 101):
self.progress.emit(i)
self.msleep(100)
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.progress_bar = QProgressBar()
self.setCentralWidget(self.progress_bar)
self.thread = WorkerThread()
self.thread.progress.connect(self.update_progress)
self.thread.start()
def update_progress(self, value):
self.progress_bar.setValue(value)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
在上面的示例代码中,`WorkerThread` 类继承自 `QThread`,并定义了一个名为 `progress` 的信号,在 `run` 方法中定期发送进度值。`MainWindow` 类继承自 `QMainWindow`,在其构造函数中创建了一个进度条,并创建了一个 `WorkerThread` 实例,连接了 `progress` 信号和 `update_progress` 槽函数,最后启动子线程。
在 `update_progress` 槽函数中,更新了进度条的显示。运行该示例代码后,可以看到进度条会不断地增加,直到达到 100。