窗口组件是应用程序的基本构建块。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

最新文章

  1. markdown小记
  2. Struts、JSTL标签库的基本使用方法
  3. [js]多个物体的运动
  4. flexible.js
  5. Java核心技术II读书笔记(二)
  6. Qt也有垃圾回收(通过QScopedPointer实现),下决心在项目里使用QScopedPointer,省了太多事情了,而且更安全!!
  7. VC++的内联汇编
  8. 高级UIKit-05(CoreData)
  9. EF框架搭建小总结--ModelFirst模型优先
  10. AD、PADS、Cadence对比
  11. python:实例化configparser模块读写配置文件
  12. 【转】JavaScript => TypeScript 入门
  13. vuejs 1.x与2.x差异
  14. [Flex+JAVA]建立Flex+java项目,并实现基本功能
  15. H5 Day2 练习
  16. [LeetCode] Contains Duplicate & Contains Duplicate II
  17. ROW_NUMBER() OVER函数的基本用法,也可用于去除重复行
  18. http协议详谈
  19. 关于BETA、RC、ALPHA、Release、GA等版本号的意义
  20. 三进制状态压缩DP(旅行商问题TSP)HDU3001

热门文章

  1. 怎么避免写出慢SQL
  2. python(类继承)
  3. Java大数据秋招面试题
  4. 2) 接口规范 原生django接口、单查群查 postman工具 CBV源码解析
  5. file download hash mismatch
  6. thinkphp-getshell Bypass
  7. Java——Java代码的执行顺序
  8. Z - New Year Tree CodeForces - 620E 线段树 区间种类 bitset
  9. SQL SERVER 函数举例
  10. python学习之变量以及变量/标识符/关键字