PyQt中的进度条(QProgressBar)通常用于显示长时间运行任务的进度。为了在进度条中显示线程完成的进度,你需要将任务放在一个单独的线程中执行,以避免阻塞主线程,同时能够实时更新UI。
以下是一个简单的例子,展示如何使用QThread和QProgressBar来显示线程完成的进度。
import sys
from PyQt5.QtCore import QThread, Qt, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QProgressBar, QVBoxLayout, QWidget
class WorkerThread(QThread):
progress_updated = pyqtSignal(int) # 定义信号
def run(self):
for i in range(101): # 模拟耗时任务
self.progress_updated.emit(i) # 发送进度更新信号
self.msleep(100) # 模拟耗时操作
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt 进度条示例")
self.setGeometry(300, 300, 300, 100)
self.progress_bar = QProgressBar(self)
self.progress_bar.setRange(0, 100) # 设置进度条范围
layout = QVBoxLayout()
layout.addWidget(self.progress_bar)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
self.worker_thread = WorkerThread()
self.worker_thread.progress_updated.connect(self.update_progress) # 连接信号与槽
self.worker_thread.finished.connect(self.task_finished) # 连接线程完成信号
def start_task(self):
self.worker_thread.start() # 启动线程
def update_progress(self, value):
self.progress_bar.setValue(value) # 更新进度条
def task_finished(self):
print("任务完成!")
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
main_window.start_task() # 开始任务
sys.exit(app.exec_())
progress_updated.emit(i)
被执行。通过上述代码和解释,你应该能够在PyQt应用程序中实现一个显示线程完成进度的进度条。如果遇到具体问题,可以根据错误信息和日志进一步调试。
没有搜到相关的沙龙