• 读Pyqt4教程,带你入门Pyqt4 _007


    QSlider

    滑块是由一个简单的滑柄的窗口组件。该滑柄可以前后拖动,通过这种方式我们可以为特定任务选择值。有时候使用滑块比简单提供数值或使用微调框(spin box)更自然。 QLabel 显示文字或图像。

    该例子中我们将显示一个滑块和一个标签。这次,标签将显示一个图像,滑块用来控制标签。

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    # slider.py
    
    import sys
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    
    class Example(QtGui.QWidget):
    
        def __init__(self):
            super(Example, self).__init__()
    
            self.initUI()
    
        def initUI(self):
    
            slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)
            slider.setFocusPolicy(QtCore.Qt.NoFocus)
            slider.setGeometry(30, 40, 100, 30)
            self.connect(slider, QtCore.SIGNAL('valueChanged(int)'),
                self.changeValue)
    
            self.label = QtGui.QLabel(self)
            self.label.setPixmap(QtGui.QPixmap('mute.png'))
            self.label.setGeometry(160, 40, 80, 30)
    
            self.setWindowTitle('Slider')
            self.setGeometry(300, 300, 250, 150)
    
    
        def changeValue(self, value):
    
            if value == 0:span>
                self.label.setPixmap(QtGui.QPixmap('mute.png'))
            elif value > 0 and value <= 30:
                self.label.setPixmap(QtGui.QPixmap('min.png'))
            elif value > 30 and value < 80:
                self.label.setPixmap(QtGui.QPixmap('med.png'))
            else:
                self.label.setPixmap(QtGui.QPixmap('max.png'))
    
    
    if __name__ == '__main__':
    
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        ex.show()
        app.exec_()

    这个例子中我们模拟音量控制,通过拖动滑块的滑柄来改变标签上的图片。

    slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)

    创建一个水平 QSlider

    self.label = QtGui.QLabel(self)
    self.label.setPixmap(QtGui.QPixmap('mute.png'))

    创建一个 QLabel 窗口组件。设置一个促使的无声图形在上面。

    self.connect(slider, QtCore.SIGNAL('valueChanged(int)'),
        self.changeValue)

    连接 valueChanged 信号到自定义的 changeValue() 方法。

    if value == 0:
        self.label.setPixmap(QtGui.QPixmap('mute.png'))
    ...

    基于滑块的值,我们设置图形到标签上。在上面的代码,如果滑块的值为0,设置 mute.png 图片到标签上。

    QProgressBar

    进度条使用来处理长时间任务的窗口组件,当看到它的动画时,用户就知道我们的任务正在进行中。在PyQt4工具包中, QProgressBar 窗口组件提供水平或者垂直的进度条。任务被分成一些阶段。程序员可以为进度条设置最小值和最大值。默认是0,99.

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    # progressbar.py
    
    import sys
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    
    class Example(QtGui.QWidget):
    
        def __init__(self):
            super(Example, self).__init__()
    
            self.initUI()
    
        def initUI(self):
    
            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.button.move(40, 80)
    
            self.connect(self.button, QtCore.SIGNAL('clicked()'),
                self.doAction)
    
            self.timer = QtCore.QBasicTimer()
            self.step = 0
    
            self.setWindowTitle('ProgressBar')
            self.setGeometry(300, 300, 250, 150)
    
    
        def timerEvent(self, event):
    
            if self.step >= 100:
                self.timer.stop()
                return
    
            self.step = self.step + 1
            self.pbar.setValue(self.step)
    
        def doAction(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__':
    
        app = QtGui.QApplication(sys.argv)
        ex = Example()
        ex.show()
        app.exec_()

    这个例子中有一个水平进度表和一个按钮,按钮开始或结束进度条。

    self.pbar = QtGui.QProgressBar(self)

    构建 QProgressBar

    self.timer = QtCore.QBasicTimer()

    我们使用定时器对象激活进度条。

    self.timer.start(100, self)

    通过调用 start() 方法加载定时器事件,该方法有两个参数,超时时间( timeout )和接受事件的对象( object )。

    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 事件处理程序。为了应对定时器事件,我们重新实现了该事件处理程序。

     

     

    本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
    转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4554951.html

     

     

  • 相关阅读:
    异常处理
    PAT——1048. 数字加密
    PAT——1047. 编程团体赛
    PAT——1046. 划拳
    PAT——1045. 快速排序(25)
    PAT——1044. 火星数字
    PAT——1043. 输出PATest
    PAT——1042. 字符统计
    PAT——1041. 考试座位号
    PAT——1040. 有几个PAT
  • 原文地址:https://www.cnblogs.com/superdo/p/4554951.html
Copyright © 2020-2023  润新知