QProgressBar部件為進(jìn)度條,進(jìn)度條方向?yàn)樗交蛘哓Q直。在處理一個(gè)耗時(shí)較長的任務(wù)時(shí),可能就會用到進(jìn)度條部件。因?yàn)槭褂眠M(jìn)度條可以形象告訴用戶當(dāng)前的任務(wù)正在進(jìn)行中。
進(jìn)度條常用函數(shù)如下:
函數(shù) |
值 |
內(nèi)容 |
setInvertedAppearance |
True/False |
設(shè)置進(jìn)度條的走向。 Ture:從左至右或從上到下 False:從右至左或從下到上 默認(rèn)為True |
setOrientation |
Qt.Horizontal/ Qt.Vertical |
設(shè)置進(jìn)度條為水平、豎直。 默認(rèn)為水平 |
setMinimum |
0~99 | 設(shè)置最小值 ,默認(rèn)0 |
setMinimum |
0~99 | 設(shè)置最大值 ,默認(rèn)99 |
setFormat |
%p %v %m |
設(shè)置進(jìn)度條旁的文本顯示: 以百分比表示; 以當(dāng)前值表示; 以總步長表示。 默認(rèn)為百分比(%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('進(jìn)度條') 10 self.step = 0 #初始值設(shè)置為0 11 self.initUI() 12 13 def initUI(self): 14 self.pbar = QProgressBar() 15 16 self.pbar.setInvertedAppearance(False) #進(jìn)度條走向 17 self.pbar.setOrientation(Qt.Horizontal) #進(jìn)度條的方向 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_())
顯示效果如下:

顯示效果為跑馬燈效果,且不顯示進(jìn)度文本。這是由于代碼中加入了
self.pbar.setMinimum(0) self.pbar.setMaximum(0)
如果將上面兩行代碼去掉,就會顯示正常效果,如下所示:

不安于小成,然后足以成大器;不誘于小利,然后可以立遠(yuǎn)功。
浙公網(wǎng)安備 33010602011771號