QProgressBar部件为进度条,进度条方向为水平或者竖直。在处理一个耗时较长的任务时,可能就会用到进度条部件。因为使用进度条可以形象告诉用户当前的任务正在进行中。
进度条常用函数如下:
|
值 | 内容 |
|
True/False |
设置进度条的走向。 Ture:从左至右或从上到下 False:从右至左或从下到上 默认为True |
|
|
设置进度条为水平、竖直。 默认为水平 |
|
0~99 | 设置最小值 ,默认0 |
|
0~99 | 设置最大值 ,默认99 |
|
%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)
如果将上面两行代码去掉,就会显示正常效果,如下所示:
来源:oschina
链接:https://my.oschina.net/u/4257767/blog/3325543