PyQt4進度條QProgressBar


當我們在處理一個好事較長的任務時,可能就會用到進度條部件。因為使用進度條可以形象告訴用戶當前的人物正在進行中。PyQt4工具包提供了水平和垂直兩種類型的進度條部件。我們可以設置進度條的最大和最小值,默認的最大和最小值分別是0和99。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore 

class ProgressBar(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('ProgressBar')
        
        self.pbar = QtGui.QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)
        
        self.button = QtGui.QPushButton('Start', self)
        self.button.setFocusPolicy(QtCore.Qt.NoFocus)
        self.move(40, 80)
        
        self.connect(self.button, QtCore.SIGNAL('clicked()'), self.onStart)
        self.timer = QtCore.QBasicTimer()
        self.step = 0
        
    def timerEvent(self, event):
        if self.step >= 100:
            self.timer.stop()
            return
        self.step += 1
        self.pbar.setValue(self.step)
        
    def onStart(self):
        if self.timer.isActive():
            self.timer.stop()
            self.button.setText('Start')
        else:
            self.timer.start(100, self)
            self.button.setText('Stop')
            
app = QtGui.QApplication(sys.argv)
icon = ProgressBar()
icon.show()
sys.exit(app.exec_())

效果:

在這個示例中,我們創建了一個水平的進度條和一個按鈕。按鈕用來啟動或終止進度。

self.pbar = QtGui.QProgressBar(self)

使用該構造器來創建一個進度條。

self.timer = QtCore.QBasicTimer()

創建一個定時器對象。

self.timer.start(100, self)

要激活該進度條,我們需要使用定時器的start()方法啟動定時器。該方法的第一個參數為超時時間。第二個參數表示當前超時時間到了以后定時器觸發超時事件的接受對象。

    def timerEvent(self, event):
        if self.step >= 100:
            self.timer.stop()
            return
        self.step += 1
        self.pbar.setValue(self.step)

每一個QObject對象或其子對象都有一個QObject.timerEvent方法。在本例中,為了響應定時器的超時事件,我們需要使用上面的代碼重寫進度條的timerEvent方法。


免責聲明!

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



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