pyqt5 gui软件界面进行多线程工作示例代码
时间: 2023-07-26 08:29:43 浏览: 106
PyQt5多线程刷新界面防假死示例
以下是一个使用PyQt5进行多线程工作的GUI示例代码:
```python
import sys
import time
from PyQt5.QtCore import Qt, QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel, QVBoxLayout
class Worker(QThread):
# 定义一个信号,用于向主线程发送消息更新GUI
signal = pyqtSignal(str)
def __init__(self):
super().__init__()
def run(self):
for i in range(10):
time.sleep(1)
self.signal.emit(f"当前进度:{i+1}/10")
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
self.worker = Worker()
self.worker.signal.connect(self.update_label)
def init_ui(self):
self.setWindowTitle("多线程GUI示例")
self.setGeometry(200, 200, 300, 150)
self.btn_start = QPushButton("开始", self)
self.btn_start.clicked.connect(self.start_thread)
self.label = QLabel("当前进度:0/10", self)
layout = QVBoxLayout()
layout.addWidget(self.btn_start)
layout.addWidget(self.label)
self.setLayout(layout)
def start_thread(self):
self.btn_start.setEnabled(False)
self.worker.start()
def update_label(self, msg):
self.label.setText(msg)
if msg == "当前进度:10/10":
self.btn_start.setEnabled(True)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个示例程序中,我们使用了PyQt5的QThread类来创建一个工作线程,该线程会休眠一秒钟,然后向主线程发送一个消息,更新GUI中的一个标签。主线程中有一个按钮,点击该按钮会启动工作线程。当工作线程完成时,主线程会将按钮重新激活。
阅读全文