PyQt5 QProgressBar进度条的用法
QProgressBar 进度条其实就是滑块,可以设置其最小值、最大值、当前值,也可以设置其方向,如横向或者竖向。
QProgressBar 初始化函数非常简单,仅一个参数 parent,表示父组件,其定义如下:
QProgressBar(parent: QWidget = None)
最大值可以通过该对象的函数 setMaximum() 来设置,定义如下:
setMaximum(self, int)
最小值可以通过该对象的函数 setMinimum() 来设置,定义如下:
setMinimum(self, int)
当前值可以通过该对象的函数 setMinimum() 来设置,定义如下:
setValue(self, int)
方向可以通过该对象的函数 setOrientation() 来设置,定义如下:
setOrientation(self, Qt.Orientation)
下面的例子包含一个进度条和一个按钮,最开始时按钮显示“开始”,如图 1 所示。
图 1 进度条
在单击按钮后,启动定时器,每 0.1 秒修改进度条的值,此时地按钮显示为“暂停”,如图 2 所示。
图 2 运行中的进度条
如果这时单击按钮,将暂停定时器,同时按钮显示为“继续”,如图 3 所示。
图 3 暂停中的进度条
如果这时单击按钮,会启动定时器,并且进度条会继续按照原来的速度向前走,直到进度条走到最右边,这时按钮显示“重新开始”,并且停掉定时器,如图 4 所示。
图 4 到了终点的进度条
如果这时单击按钮,进度条会重置为 0,按钮显示为“暂停”,就和第一次单击按钮时一样,如图 5 所示。
图 5 重新开始运行的进度条
下面是这个应用程序的完整代码:
import sys from PyQt5.QtWidgets import QMainWindow, QApplication, \ QPushButton, QProgressBar from PyQt5.QtCore import QBasicTimer class QProgressBarExample(QMainWindow): def __init__(self): super().__init__() self.init_ui() def init_ui(self): self.progressbar_obj1 = QProgressBar(self) self.progressbar_obj1.setGeometry(30, 40, 200, 25) self.button_obj1 = QPushButton(u'开始', self) self.button_obj1.move(40, 80) self.button_obj1.clicked.connect(self.on_button_clicked) self.timer_obj1 = QBasicTimer() self.step = 0 # 窗口的大小,前面两个参数是位置信息 # 后面两个参数是宽度和高度信息 self.setGeometry(300, 300, 300, 200) self.setWindowTitle(u'QProgressBar的演示程序') self.show() # 定时器处理函数 def timerEvent(self, e): if self.step >= 100: self.timer_obj1.stop() self.button_obj1.setText(u'重新开始') return self.step = self.step + 1 self.progressbar_obj1.setValue(self.step) def on_button_clicked(self): # 按钮被单击后的处理函数 # 已经走到头了,重新启动起来 if self.progressbar_obj1.value() >= 100: self.step = 0 self.progressbar_obj1.setValue(0) self.timer_obj1.start(100, self) self.button_obj1.setText(u'暂停') else: if self.timer_obj1.isActive(): # 如果正在运行中,那么暂停 self.timer_obj1.stop() self.button_obj1.setText(u'继续') else: # 如果处于暂停状态,那么启动起来 self.timer_obj1.start(100, self) self.button_obj1.setText(u'暂停') if __name__ == '__main__': app = QApplication(sys.argv) main_win = QProgressBarExample() sys.exit(app.exec_())
本文链接:http://so.lmcjl.com/news/1093/