wordpress 微信免签,长春seo培训,网站开发工具是啥,wordpress编辑主题Pyside2 (Qt For Python)进度条功能实现
进度条#xff08;QProgressBar#xff09;
今天来介绍PySide2进度条#xff08;QProgressBar#xff09;的使用#xff0c;如下所示#xff1a;
说明
进度条也是一个常用的控件#xff0c;当程序需要做一件比较耗费时间的任…Pyside2 (Qt For Python)进度条功能实现
进度条QProgressBar
今天来介绍PySide2进度条QProgressBar的使用如下所示
说明
进度条也是一个常用的控件当程序需要做一件比较耗费时间的任务比如统计数据下载文件等时可以用来向用户指示操作的进度。而且有了进度显示用户就知道应用程序仍在运行并没有出问题。
QProgressBar进度条把每个进度称之为一个step步骤。
我们可以通过它的 setRange 方法设定步骤个数比如
progressBar.setRange(0,10)以上代码将进度分为5步。然后通过 setValue 方法指定当前完成到了哪一步比如
progressBar.setValue(7)就表示完成了 7/10 也就是 70% 进度条就会显示70%的进度。
进度条程序示例代码
import time
from PySide2.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QProgressBar
from PySide2.QtCore import QThread, Signalclass Worker(QThread):progress Signal(int)def run(self):for i in range(101):time.sleep(0.1) # 模拟耗时操作self.progress.emit(i)class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle(进度条)self.setGeometry(100, 100, 300, 150)self.central_widget QWidget(self)self.setCentralWidget(self.central_widget)self.layout QVBoxLayout()self.central_widget.setLayout(self.layout)self.progress_bar QProgressBar(self)self.layout.addWidget(self.progress_bar)self.button QPushButton(开始, self)self.button.clicked.connect(self.start_process)self.layout.addWidget(self.button)def start_process(self):self.worker Worker()self.worker.progress.connect(self.update_progress)self.worker.start()def update_progress(self, value):self.progress_bar.setValue(value)if __name__ __main__:app QApplication([])window MainWindow()window.show()app.exec_()可以使用 setMinimum() 和 setMaximum() 指定最小和最大 steps默认值是0和99。 当前的 step 由 **setValue()**设置进度条可以通过 reset() 方法重新开始 如果最小值和最大值都设置为0也就是将setRange(0, 0),那么栏会显示一个繁忙的指示符而不是步骤的百分比如下所示
进度条进阶示例
通常我们在使用进度条的时候一般要同具体的任务进度绑定常见的有两种情况 同数据进行绑定例如操作的对象是大量的数据可以将进度条的范围设置为总数据量每运行相应的数据量进度条随之更新 以下是数据量和进度条进行绑定的代码示例 total_rows len(list(sheet1.iter_rows())) # 获取总行数
current_row 0 # 设置当前运行行数current_row 1 # 每运行一行变量自动1
progress int(current_row / total_rows * 100)
compareWin.update_progress_bar(100) # 更新进度条同线程进行绑定如果当前的项目存在多线程运行的情况可以将进度条和线程进行绑定方便实时反映程序运行情况以下是线程和进度条绑定的代码示例 import sys
from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QProgressBar
from PySide2.QtCore import QThread, Signalclass WorkerThread(QThread):# 定义一个信号用于更新进度条update_progress Signal(int)def run(self):for i in range(101):# 发送信号更新进度条self.update_progress.emit(i)self.msleep(50) # 模拟耗时操作class MainWindow(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle(进度条和线程绑定示例)self.setGeometry(100, 100, 400, 200)# 创建垂直布局layout QVBoxLayout(self)# 创建进度条self.progress_bar QProgressBar(self)layout.addWidget(self.progress_bar)# 创建按钮点击按钮启动线程self.start_button QPushButton(开始, self)self.start_button.clicked.connect(self.startThread)layout.addWidget(self.start_button)self.setLayout(layout)def startThread(self):# 创建线程实例self.thread WorkerThread()# 将线程的信号连接到更新进度条的槽函数self.thread.update_progress.connect(self.updateProgressBar)# 启动线程self.thread.start()# 禁用按钮防止多次点击self.start_button.setEnabled(False)def updateProgressBar(self, value):# 更新进度条的值self.progress_bar.setValue(value)# 如果进度达到100%启用按钮if value 100:self.start_button.setEnabled(True)if __name__ __main__:app QApplication(sys.argv)window MainWindow()window.show()sys.exit(app.exec_())