zoukankan      html  css  js  c++  java
  • 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方法。

  • 相关阅读:
    Visual C++ 2012/2013的内存溢出检測工具
    MATLAB新手教程
    LCD开发之汉字显示
    支持向量机通俗导论(理解SVM的三层境地)
    类与类之间的简单传值
    hibernate官方新手教程 (转载)
    秒杀多线程第四篇 一个经典的多线程同步问题
    Java的位运算符具体解释实例——与(&)、非(~)、或(|)、异或(^)
    mysql基础:mysql与C结合实例
    php实现字符串的排列(交换)(递归考虑所有情况)
  • 原文地址:https://www.cnblogs.com/moonlightpoet/p/5363431.html
Copyright © 2011-2022 走看看