在 PyQt 中实现 .start()、.progress() 和 .finish() 功能通常是为了在后台执行耗时任务的同时通过信号Signal机制更新主线程中的进度条如 QProgressBar避免界面卡顿。核心实现思路‌‌.start()‌调用 QThread.start() 启动工作线程。‌.progress()‌通过自定义信号如 pyqtSignal(int)从工作线程向主线程发送进度更新。‌.finish()‌任务完成后发射完成信号如 pyqtSignal(str)通知主线程进行收尾操作。from PyQt5.QtCore import QThread, QObject, pyqtSignal from PyQt5.QtWidgets import QApplication, QProgressBar, QPushButton, QVBoxLayout, QWidget import sys import time class Worker(QObject): progress pyqtSignal(int) # 进度更新信号 finished pyqtSignal(str) # 完成信号 def do_work(self): for i in range(101): time.sleep(0.1) # 模拟耗时操作 self.progress.emit(i) # 发送当前进度 self.finished.emit(任务完成!) class MainWindow(QWidget): def __init__(self): super().__init__() self.init_ui() def init_ui(self): self.progress_bar QProgressBar(self) self.progress_bar.setRange(0, 100) self.start_button QPushButton(开始任务, self) self.start_button.clicked.connect(self.start_task) layout QVBoxLayout() layout.addWidget(self.progress_bar) layout.addWidget(self.start_button) self.setLayout(layout) # 线程和工作器初始化 self.thread QThread() self.worker Worker() self.worker.moveToThread(self.thread) # 连接信号与槽 self.thread.started.connect(self.worker.do_work) self.worker.progress.connect(self.progress_bar.setValue) self.worker.finished.connect(self.thread.quit) self.worker.finished.connect(self.worker.deleteLater) self.thread.finished.connect(self.thread.deleteLater) def start_task(self): if not self.thread.isRunning(): self.thread.start() if __name__ __main__: app QApplication(sys.argv) window MainWindow() window.show() sys.exit(app.exec_())使用 ‌Worker 对象 moveToThread()‌ 方式而非直接继承 QThread更安全且符合 Qt 最佳实践