python pyqt5 QThread多线程执行任务,并将执行结果返回主界面
效果图:
代码:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
from PyQt5.QtCore import QThread, pyqtSignal
import sys
import time
class Worker(QThread):
signal = pyqtSignal(str)
def run(self):
# 在这里执行你的任务
for i in range(5):
time.sleep(5)
self.signal.emit(f"任务进度:{i + 1}/5")
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('多线程示例')
layout = QVBoxLayout()
self.label = QLabel("点击按钮开始任务")
layout.addWidget(self.label)
self.start_button = QPushButton("开始任务")
self.start_button.clicked.connect(self.start_task)
layout.addWidget(self.start_button)
self.setLayout(layout)
def start_task(self):
self.worker = Worker()
self.worker.signal.connect(self.update_label)
self.worker.start()
def update_label(self, text):
self.label.setText(text)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())