Python高級進階#015 pyqt5進度條QProgressBar結合使用qbasictimer

  • 2019 年 11 月 5 日
  • 筆記

一、進度條的使用思想

進度條qprogressbar

使用思想:

1.載入類庫

2.初始化類對象

3.設置最小值和最大值

4.時鐘的使用QBasicTimer,槽方法對應類庫的timerEvent

5.判斷什麼時候停止載入進度條

這裡我們在學習使用進度條的時候,必須要結合使用時鐘控制項,這樣才能讓我們看到進度條動的感覺。

二、製作案例

說明如下:

1.介面由進度條和按鈕組成

2.進度條的值範圍為0~100

3.按鈕的狀態為「開始」、「停止」、「完成」

4..按鈕需要能夠控制進度條的運行

三、開發過程知識點介紹

1.導入時鐘類

from PyQt5.QtCore  import QBasicTimer

2.初始化進度條

self.pgb=QProgressBar(self)  #類對象的初始化  self.pgb.move(50,50)   #將進度條移動到指定位置  self.pgb.resize(300,20)   #設置進度條寬高

3.設置進度條的範圍

#設置進度條的範圍  self.pgb.setMinimum(0)  self.pgb.setMaximum(100)  self.pgb.setValue(50)  

4.時鐘控制項

作用:每隔多少時間執行一次時鐘內部的程式碼。

時間單位為:毫秒

1秒=1000毫秒

QBasicTimer控制項解析

  • isActive方法:返回時鐘控制項是否開啟。如果開啟返回true,否則為false
  • Start方法:使得時鐘控制項開啟來。需要傳入時間間隔,時間單位為毫秒。

簡單的參數使用格式:

Start(時間,self)

Stop方法:使得時鐘控制項關閉。

timerId方法:返回當前時鐘控制項的ID,表示某個時鐘控制項。這個主要用於多個時鐘控制項使用的時候,區分不同的時鐘控制項。

5.時鐘控制項的事件重寫

對應的槽方法是Qwidget控制項自帶的timerEvent事件。

時鐘控制項的每個多少時間要運行一次的程式碼就是在timerEvent方法中,我們在使用時鐘控制項的時候要重寫這個方法。

時鐘控制項狀態切換的核心程式碼:

if self.timer1.isActive():  #檢測是否開啟      self.timer1.stop()      self.btn.setText(「開始」)   #這裡的按鈕的狀態顯示的是下一次的行為  else:      self.timer1.start(100, self)      self.btn.setText("停止")

四、總結強調

1.掌握Qprogressbar的控制項的配置

2.掌握時鐘控制項的基本使用QBasicTimer

3.理解按鈕控制時鐘控制項達到進度條的運行的思想。

本節知識源程式碼:

import sys  from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QProgressBar  from PyQt5.QtCore import QBasicTimer    class MyClass(QWidget):      def __init__(self):          super(MyClass, self).__init__()          self.initUI()      def initUI(self):          self.setWindowTitle("劉金玉編程")          self.setGeometry(300,100,400,300)          #載入進度條控制項          self.pgb=QProgressBar(self)          self.pgb.move(50,50)          self.pgb.resize(300,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_()