PyQt5:QProgressBar进度条(26)

原创 2016年06月01日 00:48:59

学习《PyQt4入门指南 PDF中文版.pdf 》笔记

当我们在处理一个耗时较长的任务时,可能就会用到进度条部件。因为使用进度条可以形象告诉用户当前的任务正在进行中。PyQt5工具包提供了水平和垂直两种类型的进度条部件。我们可以设置进度条的最大和最小值,默认的最大和最小值分别为0和99。

<span style="font-size:12px;">#!/usr/bin/python
# progressbar.py

from PyQt5.QtWidgets import QApplication, QProgressBar, QPushButton
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt, QBasicTimer

class ProgressBar(QtWidgets.QWidget):
    def __init__(self, parent= None):
        QtWidgets.QWidget.__init__(self)
        
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('ProgressBar')
        self.pbar = QProgressBar(self)
        self.pbar.setGeometry(30, 40, 200, 25)
        
        self.button = QPushButton('Start', self)
        self.button.setFocusPolicy(Qt.NoFocus)
        self.button.move(40, 80)
        
        self.button.clicked.connect(self.onStart)
        self.timer = QBasicTimer()
        self.step = 0
        
    def timerEvent(self, event):
        if self.step >=100:
            self.timer.stop()
            return
        self.step = 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')
        

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    qb = ProgressBar()
    qb.show()
    sys.exit(app.exec_())</span>

在这个示例中,我们创建了一个水平的进度条和一个按钮。按钮用来启动或终止进度。

         self.pbar= QProgressBar(self)

         创建一个进度条。

         self.timer= QBasicTimer()

         创建一个定时器对象。

         self.timer.start(100,self)

         需要激活该进度条,我们需要使用定时器的start()方法启动定时器。该方法的第一个参数为超时时间。第二个参数表示当前超时时间到了以后定时器触发超时事件的接受对象。

         def  timerEvent(self, event):

                   if self.step >=100:

                           self.timer.stop()

                           return

                   self.step = self.step + 1

                   self.pbar.setValue(self.step)

         每一个QObject对象或其子对象都有一个QObject.timerEvent方法。在本实例中,为了响应定时器的超时事件,我们需要使用上面的代码重写进度条的timerEvent方法。


版权声明:本文为博主原创文章,未经博主允许不得转载。

PyQt5教程-14-进度条

进度条是,当我们处理冗长的任务时使用的控件。它是以动画的形式让用户知道该任务正在取得进展。该QProgressBar控件提供一个水平或垂直进度条。程序员可以设置进度条的最小值和最大值。默认值是0到99...
  • weiaitaowang
  • weiaitaowang
  • 2016年08月04日 09:29
  • 3100

pyqt5 在别的窗口弹出进度条

要求:在导入视频的同时,利用caffe训练好的模型提取视频的特征,这个过程比较费时间,因此需要进度条,不然以为程序死掉了。 在条用进度条出现的问题有: 1、进度条窗口可以弹出但是没有进度条、label...
  • summermaoz
  • summermaoz
  • 2017年03月06日 16:20
  • 901

PyQt4 精彩实例分析* 实例8 使用进度条

通常在处理长时间任务时需要提供进度条的显示,告诉用户当前任务的进展情况。本实例演示如何使用进度条,如下图所示。...
  • wohaoxuexi
  • wohaoxuexi
  • 2014年05月11日 18:45
  • 7914

Pyqt5系列(七)-信号与槽机制

信号和槽机制是 QT 的核心机制,要精通 QT 编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是 QT 的核心特性,也是 QT 区别于其它工具包的重要地方。 在l...
  • zhulove86
  • zhulove86
  • 2016年09月14日 12:01
  • 7328

快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发

完美安装 Anaconda3 + PyQt5 + Eric6 一文对PyQt5与Eric6的安装做了详细的记录。这次将结合使用PyQt5和Eric6以实例的方式向大家展示PyQt5与Eric6的极速G...
  • weiaitaowang
  • weiaitaowang
  • 2016年07月27日 19:08
  • 12121

PyQt5初级教程--PyQt5中部件[8/13]

想用PyQt5写GUI,但是网上的PyQt5资源太少了,找到一个英文的,翻译一下,和学习PyQt5的同学共勉! (本系列中所有代码在windows7 64位[]/Python 3.4.3 32bit/...
  • neverstop_2009
  • neverstop_2009
  • 2015年08月08日 23:25
  • 2151

《PyQt5 快速编程》例子注释

Fraction Slider.py的qt4代码修改后的qt5版本import platform import PyQt5 from PyQt5.QtCore import QPointF,QRect...
  • acsunqi
  • acsunqi
  • 2017年07月25日 15:16
  • 1868

常见的Loading进度条动效形式

在浏览网页、玩游戏、手机应用等场景,因为网速慢或是硬件差的关系,难免会遇上等待加载的情况,没人喜欢等待,耐心差的用户可能因为操作得不到及时反馈,直接选择放弃。正所谓细节决定成败,这时添加一个Loadi...
  • shi_weihappy
  • shi_weihappy
  • 2015年04月25日 20:35
  • 904

PyQt4 精彩实例分析* 实例8 使用进度条

通常在处理长时间任务时需要提供进度条的显示,告诉用户当前任务的进展情况。本实例演示如何使用进度条,如下图所示。                                          ...
  • wdt3385
  • wdt3385
  • 2013年09月18日 15:55
  • 1225

PyQt圆形按钮

不规则形状的控件一直是图形界面设计的不可缺少的一项,但是有些控件的不规则实现却比较困难。这篇文字专注于圆形按钮的实现,此实现方法比较简单,没有任何难点,且看实现效果。 按钮初始图片: Ho...
  • jiuzuidongpo
  • jiuzuidongpo
  • 2014年08月27日 10:28
  • 2210
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PyQt5:QProgressBar进度条(26)
举报原因:
原因补充:

(最多只允许输入30个字)