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

QCheckBox

QCheckBox (复选框) 是一个由两种状态的窗口组件。 OnOff 。他是一个带标签的框。每段一个复选框被选中和或者清楚时,都将发射信号 stateChanged()

#!/usr/bin/python
# -*- coding: utf-8 -*- # checkbox.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.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Checkbox') self.cb = QtGui.QCheckBox('Show title', self)
self.cb.setFocusPolicy(QtCore.Qt.NoFocus)
self.cb.move(10, 10)
self.cb.toggle()
self.connect(self.cb, QtCore.SIGNAL('stateChanged(int)'),
self.changeTitle) def changeTitle(self, value): if self.cb.isChecked():
self.setWindowTitle('Checkbox')
else:
self.setWindowTitle('') if __name__ == '__main__': app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
app.exec_()

在我们的例子中,我们将创建一个复选框来切换窗口标题。

self.cb = QtGui.QCheckBox('Show title', self)

构建 QCheckBox

self.cb.setFocusPolicy(QtCore.Qt.NoFocus)

禁用 QCheckBox 的焦点。获由焦点的 QCheckBox 可以通过空格选择或者取消选择。

self.cb.toggle()

设置窗口标题,必须选中复选框。默认情况下,不设置窗口标题,复选框设为未选择。

self.connect(self.cb, QtCore.SIGNAL('stateChanged(int)'), self.changeTitle)

连接用户定义的 changeTitle()stateChanged() 信号。 changeTitle() 方法将切换窗口标题。

切换按钮

PyQt4没有切换按钮的窗口组件,为了创建切换按钮,我们使用特殊模式的 QPushButton 。切换按钮是指一个两种状态的按钮,按下和非按下。通过点击切换两种状态。在某种状态下来这种方式很合适。

#!/usr/bin/python
# -*- coding: utf-8 -*- # togglebutton.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.color = QtGui.QColor(0, 0, 0) self.red = QtGui.QPushButton('Red', self)
self.red.setCheckable(True)
self.red.move(10, 10) self.connect(self.red, QtCore.SIGNAL('clicked()'), self.setColor) self.green = QtGui.QPushButton('Green', self)
self.green.setCheckable(True)
self.green.move(10, 60) self.connect(self.green, QtCore.SIGNAL('clicked()'), self.setColor) self.blue = QtGui.QPushButton('Blue', self)
self.blue.setCheckable(True)
self.blue.move(10, 110) self.connect(self.blue, QtCore.SIGNAL('clicked()'), self.setColor) self.square = QtGui.QWidget(self)
self.square.setGeometry(150, 20, 100, 100)
self.square.setStyleSheet("QWidget { background-color: %s }" %
self.color.name()) self.setWindowTitle('ToggleButton')
self.setGeometry(300, 300, 280, 170) def setColor(self): source = self.sender() if source.text() == "Red":
if self.red.isChecked():
self.color.setRed(255)
else: self.color.setRed(0) elif source.text() == "Green":
if self.green.isChecked():
self.color.setGreen(255)
else: self.color.setGreen(0) else:
if self.blue.isChecked():
self.color.setBlue(255)
else: self.color.setBlue(0) self.square.setStyleSheet("QWidget { background-color: %s }" %
self.color.name()) if __name__ == '__main__': app = QtGui.QApplication(sys.argv)
ex = Example()
ex.show()
app.exec_()

这个例子中,我们创建了三个切换按钮和一个窗口组件,设置窗口组件的背景为黑色。这些切换按钮将切换颜色值的红绿蓝部分。背景色依赖于我们按下哪个切换按钮。

self.color = QtGui.QColor(0, 0, 0)

这是初始颜色,没有红绿蓝等于黑色。

self.red = QtGui.QPushButton('Red', self)
self.red.setCheckable(True)

为了创建一个切换按钮,我们创建了一个 QPushButton 并通过 setCheckable 方法使之可选择。

self.connect(self.red, QtCore.SIGNAL('clicked()'), self.setColor)

连接 clicked 信号到自定义的方法。

source = self.sender()

获得切换的按钮。

if source.text() == "Red":
if self.red.isChecked():
self.color.setRed(255)
else: self.color.setRed(0)

如果是红色按钮,我们更新颜色的红色部分。

self.square.setStyleSheet("QWidget { background-color: %s }" %
self.color.name())

通过样式表修改背景色。

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

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

  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 _008

    QCalendarWidget QCalendarWidget 提供基于月份的日历窗口组件,它允许用户简单并且直观的选择日期. #!/usr/bin/python # -*- coding: utf- ...

随机推荐

  1. python(configparser 模块)

    1.下载安装 configparser 第三方模块 pip install configparser 2.读取配置文件 #配置文件内容如下 """ "D:/co ...

  2. 如何找到Hive提交的SQL相对应的Yarn程序的applicationId

    最近的工作是利用Hive做数据仓库的ETL转换,大致方式是将ETL转换逻辑写在一个hsql文件中,脚本当中都是简单的SQL语句,不包含判断.循环等存储过程中才有的写法,仅仅支持一些简单的变量替换,比如 ...

  3. 《Docker从入门到跑路》之Dockerfile基本操作

    一.简介 Dockerfile是一个文本文件,里面包含一条条指令,每一条指令就是一层镜像.一般情况下,Dockerfile分为4个部分: 基础镜像 维护者信息 镜像操作指令 容器启动时执行命令 例如: ...

  4. Redis 到底是单线程还是多线程?我要吊打面试官!

    最近在Java技术栈公众号发布的一篇文章,其中有一道题: Redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看) 好些粉丝在后台问我:为什么请回,Redis不是单线程吗? 大家注意 ...

  5. B - Lawrence HDU - 2829 斜率dp dp转移方程不好写

    B - Lawrence HDU - 2829 这个题目我觉得很难,难在这个dp方程不会写. 看了网上的题解,看了很久才理解这个dp转移方程 dp[i][j] 表示前面1~j 位并且以 j 结尾分成了 ...

  6. spring类型转换

    如果表单提交的时候,有的字段是字符串类型,但是后台接收到的时候是其他类型(比如日期类型),我们就可以使用类型转换来把字符串类型转换为需要的类型.当字符串类型和后台的日期类型匹配的时候,也可以不做转换, ...

  7. 介绍一个船新的 PHP SDK + Runtime: PeachPie

    前言 这几天想基于 .NET Core 搞一个自己的博客网站,于是在网上搜刮各种博客引擎,找到了这些候选:Blogifier.Miniblog 以及 edi 写的 Moonglate. Blogifi ...

  8. [hdu5255]枚举

    思路:这题与csu1392题目类似,方法类似.枚举最高位,最低位和中间数字的长度,然后列等式,计算中间的数字,看长度是不是跟枚举的一致,需要注意的是中间数字可以有前导0,如果根据等式算出来的中间数字为 ...

  9. 【系列】Python编程思想(1):Python简介与开发环境搭建

    李宁老师的 开始学习.   本系列文章深入介绍了Python的各种技术,堪称是目前最全的Python教程.主要目的是让读者可以了解Python的各种核心技术,包括各种Python函数库.本教程使用Py ...

  10. about VennsBlog.

    此博客主要将用于记录自己学习路上的一些点滴及心得 同时,也希望各位提出指正 相互交流,共同进步 感谢相遇