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

最新文章

  1. ASP.NET MVC 防止 CSRF 的方法
  2. PHP 使用 curl_* 系列函数和 curl_multi_* 系列函数进行多接口调用时的性能对比
  3. Python常见的运行错误
  4. requirejs加载css样式表
  5. 如何准备阿里社招面试,顺谈 Java 程序员学习中各阶段的建议
  6. shell脚本实现 视频格式转换 ffmpeg 实现视频转换
  7. 关于scut使用WebService
  8. Excel数据导入导出
  9. BoundsChecker使用
  10. 基于visual Studio2013解决算法导论之001插入排序
  11. 在ASP.NET MVC中使用IIS级别的URL Rewrite
  12. zabbix企业应用之bind dns监控(转)
  13. 详细介绍Java虚拟机(JVM)
  14. 基于Vue的小日历(支持按周切换)
  15. Mysql覆盖索引 covering index 或者 index coverage
  16. python中的string
  17. 注意Vietnamese_CI_AS排序规则下的特殊字符大小敏感问题
  18. 解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project autotest_fchtgl: Compilation failure的方法
  19. AtcoderARC062F Painting Graphs with AtCoDeer 【双连通分量】【polya原理】
  20. Linux下常见音频格式之间的转换方法

热门文章

  1. cookie、session 和 token 区别
  2. 请不要浪费你的生命,一文多发推广就用它(OpenWrite)
  3. django项目的uwsgi方式启停脚本
  4. css的属性选择器
  5. IDEA破解,自动激活【2020年版本也可以破解】
  6. Qt 视频播放器
  7. SVN 报错问题
  8. Code Review 常见的5个错误模式
  9. CompletableFuture的使用例子
  10. 【Effective Java】第二章-创建和销毁对象——1.考虑用静态工厂方法代替构造器