PyQt5 進度條(QProgressBar)的使用


進度條(QProgressBar)

  • QProgressBar 是進度條,如下圖所示


  1. 說明
  • QProgressBar小部件提供了一個水平或垂直的進度條

  • 進度條也是一個常用的控件,當程序需要做一件比較耗費時間的任務(比如統計數據,下載文件等)時,可以用來向用戶指示操作的進度

  • 進度條用於向用戶指示操作的進度,並向他們保證應用程序仍在運行。


  • QProgressBar 進度條把每個進度稱之為一個step(步驟);

    • 進度條使用steps的概念,可以通過指定最小和最大可能的step值來設置它,並且當您稍后將當前step值賦給它時,它將顯示已經完成的step的百分比

    • 百分比是通過將進度 (value() - minimum()) / (maximum() - minimum())來計算的

    • 可以通過它的 setRange() 方法設定步驟個數

    progressbar.setRange(0, 10)
    
    • 這樣就設定了,將整個進度分為5步(step)

    • 然后,通過 setValue 方法,指定當前完成到了哪一步

    progressbar.setValue(5)
    
    • 這樣就表示完成了 5/10, 也就是 50%, 進度條就會顯示50%的進度。

    • 可以使用 reset() 方法將進度條倒退到開頭,重新開始


  • 可以使用 setMinimum()setMaximum() 指定最小和最大 steps;默認值是0和99。

    • 當前的 stepsetValue()設置

    • 進度條可以通過 reset() 方法,重新開始


  • 如果最小值和最大值都設置為0,也就是將setRange(0, 0),那么欄會顯示一個繁忙的指示符,而不是步驟的百分比,如下圖所示


  1. 常用方法:
方法 說明
setRange QProgressBar.setRange(min, Max) 通過 setRange 方法設定步驟個數
setValue QProgressBar.setValue(number) QProgressBar.setValue()該方法設置進度條的當前值,value值不停地增加,進度就在增加
例如:setValue(5) :  假如整個step是10,則表示完成整個步驟的5/10,即50%
setMaximum() 0 — 99
例如:QProgressBar.setMaximum(99)
設置step的最大值,默認值是99
例如:QProgressBar.setMaximum(99)   表示step最大值為99
setMinimum() 0 — 99
例如:QProgressBar.setMinimum(0)
設置stepd最小值,默認值是0
例如:QProgressBar.setMinimum(0)   表示step最小值為0
reset() QProgressBar.reset() 設置進度條重新開始
setOrientation QProgressBar.setOrientation(Qt.Horizontal)
QProgressBar.setOrientation(Qt.Vertical)
QProgressBar.setOrientation()該屬性設置了進度條的方向;
方向必須是Qt.Horizontal(默認,水平)或Qt.Vertical(垂直)
注意:水平和垂直,需導入 from PyQt5.QtCore import Qt
setFormat %p% — 被完成的百分比取代
%v% — 被當前值替換
%m% — 被總step所取代
默認值是 : %p%
注意:如果沒有加第二個%(即%p),顯示的指數則沒有%
QProgressBar.setFormat()屬性包含用於生成當前文本的字符串
setInvertedAppearance setInvertedAppearance(True)
setInvertedAppearance(False)
設置進度條的走向;
QProgressBar.setInvertedAppearance(True)   進度條從左到右(水平進度條)/從上到下(垂直進度條)
QProgressBar.setInvertedAppearance(False)   進度條從右到左(水平進度條)/從下到上(垂直進度條)
  1. 演示示例
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QProgressBar
from PyQt5.QtCore import QBasicTimer


class MyClass(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(300, 200)
        # 載入進度條控件
        self.pgb = QProgressBar(self)
        self.pgb.move(50, 50)
        self.pgb.resize(250, 20)

        # 配置一個值表示進度條的當前進度
        self.pv = 0

        # 申明一個時鍾控件
        self.timer1 = QBasicTimer()

        # 設置進度條的范圍
        self.pgb.setMinimum(0)
        self.pgb.setMaximum(100)
        self.pgb.setValue(self.pv)
        # 載入按鈕
        self.btn = QPushButton("開始", self)
        self.btn.move(50, 100)
        self.btn.clicked.connect(self.myTimerState)
        self.show()

    def myTimerState(self):
        if self.timer1.isActive():
            self.timer1.stop()
            self.btn.setText("開始")
        else:
            self.timer1.start(100, self)
            self.btn.setText("停止")

    def timerEvent(self, e):
        if self.pv == 100:
            self.timer1.stop()
            self.btn.setText("完成")
        else:
            self.pv += 1
            self.pgb.setValue(self.pv)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mc = MyClass()
    app.exec_()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM