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)
如果將上面兩行代碼去掉,就會顯示正常效果,如下所示: