QProgressBar部件为进度条,进度条方向为水平或者竖直。在处理一个耗时较长的任务时,可能就会用到进度条部件。因为使用进度条可以形象告诉用户当前的任务正在进行中。
进度条常用函数如下:
函数 |
值 |
内容 |
setInvertedAppearance |
True/False |
设置进度条的走向。 Ture:从左至右或从上到下 False:从右至左或从下到上 默认为True |
setOrientation |
Qt.Horizontal/ Qt.Vertical |
设置进度条为水平、竖直。 默认为水平 |
setMinimum |
0~99 | 设置最小值 ,默认0 |
setMinimum |
0~99 | 设置最大值 ,默认99 |
setFormat |
%p %v %m |
设置进度条旁的文本显示: 以百分比表示; 以当前值表示; 以总步长表示。 默认为百分比(%p)。 |
示例如下:
1 import sys,time 2 from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton,QVBoxLayout 3 from PyQt5.QtCore import Qt 4 5 6 class Mywin(QWidget): 7 def __init__(self): 8 super().__init__() 9 self.setWindowTitle('进度条') 10 self.step = 0 #初始值设置为0 11 self.initUI() 12 13 def initUI(self): 14 self.pbar = QProgressBar() 15 16 self.pbar.setInvertedAppearance(False) #进度条走向 17 self.pbar.setOrientation(Qt.Horizontal) #进度条的方向 18 self.btn = QPushButton('开始', self) 19 20 self.v_layout = QVBoxLayout() 21 self.v_layout.addWidget(self.pbar) 22 self.v_layout.addWidget(self.btn) 23 self.setLayout(self.v_layout) 24 25 self.btn.clicked.connect(self.action) 26 27 def action(self): 28 self.pbar.setMinimum(0) 29 self.pbar.setMaximum(0) 30 while self.step < 1000: 31 self.pbar.setValue(self.step) 32 self.step += 1 33 time.sleep(0.001) 34 else: 35 self.step = 0 36 print('done') 37 self.pbar.setValue(self.step) 38 39 40 if __name__ == '__main__': 41 app = QApplication(sys.argv) 42 mywin = Mywin() 43 mywin.show() 44 sys.exit(app.exec_())
显示效果如下:
显示效果为跑马灯效果,且不显示进度文本。这是由于代码中加入了
self.pbar.setMinimum(0) self.pbar.setMaximum(0)
如果将上面两行代码去掉,就会显示正常效果,如下所示:
不安于小成,然后足以成大器;不诱于小利,然后可以立远功。