您好,登錄后才能下訂單哦!
小編給大家分享一下PyQt5每天必學(xué)之進(jìn)度條效果,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
進(jìn)度條是,當(dāng)我們處理冗長的任務(wù)時(shí)使用的控件。它是以動(dòng)畫的形式讓用戶知道該任務(wù)正在取得進(jìn)展。該QProgressBar控件提供一個(gè)水平或垂直進(jìn)度條。程序員可以設(shè)置進(jìn)度條的最小值和最大值。默認(rèn)值是0到99。
#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar, QPushButton from PyQt5.QtCore import QBasicTimer class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.pbar = QProgressBar(self) self.pbar.setGeometry(30, 40, 200, 25) self.btn = QPushButton('開始', self) self.btn.move(40, 80) self.btn.clicked.connect(self.doAction) self.timer = QBasicTimer() self.step = 0 self.setGeometry(300, 300, 280, 170) self.setWindowTitle('進(jìn)度條') self.show() def timerEvent(self, e): if self.step >= 100: self.timer.stop() self.btn.setText('完成') return self.step = self.step+1 self.pbar.setValue(self.step) def doAction(self, value): if self.timer.isActive(): self.timer.stop() self.btn.setText('開始') else: self.timer.start(100, self) self.btn.setText('停止') if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
在我們的例子,我們有一個(gè)水平進(jìn)度條控件和一個(gè)按鈕控件。點(diǎn)擊按鈕啟動(dòng)或停止進(jìn)度條。
self.pbar = QProgressBar(self)
使用 QProgressBar 創(chuàng)建進(jìn)度條
self.timer = QBasicTimer()
激活進(jìn)度條,我們需使用一個(gè)計(jì)時(shí)器對(duì)象。
self.timer.start(100, self)
要啟動(dòng)定時(shí)器事件,我們需調(diào)用它的start()方法。這種方法有兩個(gè)參數(shù):超時(shí)和將接收的事件的對(duì)象。
def timerEvent(self, e): if self.step >= 100: self.timer.stop() self.btn.setText('完成') return self.step = self.step+1 self.pbar.setValue(self.step)
每個(gè)繼承自QObject 的對(duì)象都有一個(gè)timerEvent()事件處理程序。為了定時(shí)器事件作用到進(jìn)度條,我們重寫了這個(gè)事件處理程序。
def doAction(self, value): if self.timer.isActive(): self.timer.stop() self.btn.setText('開始') else: self.timer.start(100, self) self.btn.setText('停止')
使用 doAction() 方法啟動(dòng)和停止計(jì)時(shí)器。
程序執(zhí)行后
以上是“PyQt5每天必學(xué)之進(jìn)度條效果”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。