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

读Pyqt4教程,带你入门Pyqt4 _007的更多相关文章

  1. 读Pyqt4教程,带你入门Pyqt4 _009

    QLineEdit QLineEdit 窗口组件用来输入或者编辑单行纯文本,有撤销/重做,剪切/粘贴和拖放功能. #!/usr/bin/python # -*- coding: utf-8 -*- # ...

  2. 读Pyqt4教程,带你入门Pyqt4 _005

    对话框窗体或对话框是现代GUI应用不可或缺的一部分.dialog定义为两个或多个人之间的交谈.在计算机程序中dialog是一个窗体,用来和程序“交谈”.对话框用来输入数据.修改数据.改变程序设置等等. ...

  3. 读Pyqt4教程,带你入门Pyqt4 _004

    在PyQt4教程的这部分中,我们将探讨应用中事件和信号的发生. 事件是GUI程序的重要部分,由用户或者系统产生.当我们调用应用的 exec_() 方法,应用进入主循环.主循环获取事件并把它们发往对象. ...

  4. 读Pyqt4教程,带你入门Pyqt4 _003

    编程中的一个重要事情是布局管理,布局管理是如何在窗体上摆放窗口组件.可以有两种方式进行管理:绝对定位或使用布局类. 绝对定位 程序员用像素指定每个控件的位置和尺寸.使用绝对定位时,你必须理解几件事情. ...

  5. 读Pyqt4教程,带你入门Pyqt4 _002

    在这节教程中,我们将创建菜单和工具栏. QMainWindow 类提供应用程序主窗口,可以创建一个经典的拥有状态栏.工具栏和菜单栏的应用程序骨架. 菜单栏 菜单栏是GUI应用程序最明显的部分之一,这是 ...

  6. 读Pyqt4教程,带你入门Pyqt4 _013

    你是否曾经看着应用程序并思考特定的GUI项是如何产生的?大概每位程序员都这样过.然后你能看到你喜欢的GUI库提供的一系列窗口组件,但是你无法找到它.工具包通常仅仅提供最常用的窗口组件,比如按钮.文本组 ...

  7. 读Pyqt4教程,带你入门Pyqt4 _012

    颜色 颜色是指一个代表红(Red).绿(Green).蓝(Blue)(RGB)强度值组合的对象,有效的RGB值在0~255之间.我们可以用多种方式定义颜色,最常用的是RGB十进制或者十六进制值.也可以 ...

  8. 读Pyqt4教程,带你入门Pyqt4 _010

    在PyQt4教程的这部分中,我们讨论拖放操作. 拖放(Drag-and-drop)指的是图形用户界面(Graphical user interface)中,在一个虚拟的对象上按着鼠标键将之拖曳到另一个 ...

  9. 读Pyqt4教程,带你入门Pyqt4 _006

    窗口组件是应用程序的基本构建块.PyQt4编程工具包拥有范围广泛的各种窗口组件.按钮.选择框.滑块.列表框等等,程序员工作所需要的一切.在教程的这部分中,我们将介绍一些有用的窗口组件. QCheckB ...

随机推荐

  1. LCA 学习总结

    怎么说,LCA裸题直接套板子,大家都会做,这样的题没必要看,剩下的题发先LCA只是一个工具就像是搜索一样,只是一个工具而不是一种算法,所以借助这套工具在其图论问题如最长路,数据结构等问题上再去发挥作用 ...

  2. 杭电60题--part 1 HDU1003 Max Sum(DP 动态规划)

    最近想学DP,锻炼思维,记录一下自己踩到的坑,来写一波详细的结题报告,持续更新. 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Problem ...

  3. 【WPF学习】第六十八章 自定义绘图元素

    上一章分析了WPF元素的内部工作元素——允许每个元素插入到WPF布局系统的MeasureOverride()和ArrangeOverride()方法中.本章将进一步深入分析和研究元素如何渲染自身. 大 ...

  4. 3) drf 框架生命周期 请求模块 渲染模块 解析模块 自定义异常模块 响应模块(以及二次封装)

    一.DRF框架 1.安装 pip3 install djangorestframework 2.drf框架规矩的封装风格 按功能封装,drf下按不同功能不同文件,使用不同功能导入不同文件 from r ...

  5. python连接MySQL/redis/mongoDB数据库的简单整理

    python连接mysql 用python操作mysql,你必须知道pymysql 代码示意: import pymysql conn = pymysql.connect(host='127.0.0. ...

  6. 多线程高并发编程(7) -- Future源码分析

    一.概念 A Future计算的结果. 提供方法来检查计算是否完成,等待其完成,并检索计算结果. 结果只能在计算完成后使用方法get进行检索,如有必要,阻塞,直到准备就绪. 取消由cancel方法执行 ...

  7. http协议跟tcp协议的简单理解

    在说明这两个协议之前,我们先简单说一下网络的分层. 1)应用层 支持网络应用,应用协议仅仅是网络应用的一个组成部分,运行在不同主机上的进程则使用应用层协议进行通信.主要的协议有:http.ftp.te ...

  8. VA01信贷使用

    1业务场景 业务在正式机中发现,当使用VA01输入客户编号回车后会报错 2解决方法 1. SE24进入CL_IM_UKM_SD_FSCM_INTEGR1 2. 双击方法IF_EX_BADI_SD_CM ...

  9. 安装laravel环境之homestead(for mac)

    1.先下载virtualbox + vagrant 2.执行命令 vagrant box add laravel/homestead 3.新建一个空文件夹,在里面下载代码.我是放在当前用户下的新建的W ...

  10. Rx-Volley 自己来封装

    自从15年接触了RxJava,对函数式编程越发的喜爱.以前Android项目上网络层都是统一的使用Volley,已经对网络请求的回调,多个回调嵌入各种不爽了,趁着年前任务轻松,赶紧的将Volley封装 ...