PyQt4开关按钮ToggleButton
PyQt4没有开关按钮部件。但是我们可以使用在特殊状态下的QPushButton部件来创建开关按钮。而所谓的开关按钮就是一个具有按下和未按下两种状态的普通赶牛。用户可以通过单击按钮来切换其开或者关的状态。在一些情形下,这个特性会非常好用。
#!/usr/bin/python
# -*- coding: utf-8 -*- import sys
from PyQt4 import QtGui, QtCore class ToggleButton(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)
self.color = QtGui.QColor(0, 0, 0)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('ToggleButton')
self.red = QtGui.QPushButton('Red', self)
self.red.setCheckable(True)
self.red.move(10, 10)
self.connect(self.red, QtCore.SIGNAL('clicked()'), self.setRed)
self.green = QtGui.QPushButton('Green', self)
self.green.setCheckable(True)
self.green.move(10, 60)
self.connect(self.green, QtCore.SIGNAL('clicked()'), self.setGreen)
self.blue = QtGui.QPushButton('Blue', self)
self.blue.setCheckable(True)
self.blue.move(10, 110)
self.connect(self.blue, QtCore.SIGNAL('clicked()'), self.setBlue)
self.square = QtGui.QWidget(self)
self.square.setGeometry(150, 20, 100, 100)
self.square.setStyleSheet('QWidget {background-color: %s}' % self.color.name())
QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('cleanlooks')) def setRed(self):
if self.red.isChecked():
self.color.setRed(255)
else:
self.color.setRed(0)
self.square.setStyleSheet('QWidget {background-color: %s}' % self.color.name()) def setGreen(self):
if self.green.isChecked():
self.color.setGreen(255)
else:
self.color.setGreen(0)
self.square.setStyleSheet('QWidget {background-color: %s}' % self.color.name()) def setBlue(self):
if self.blue.isChecked():
self.color.setBlue(255)
else:
self.color.setBlue(0)
self.square.setStyleSheet('QWidget {background-color: %s}' % self.color.name()) app =QtGui.QApplication(sys.argv)
tb = ToggleButton()
tb.show()
sys.exit(app.exec_())
效果:

在这个例子中,我们创建了三个开关按钮和一个QWidget部件,并将QWidget部件的背景颜色设置为黑色。用户通过开关按钮从红、绿、蓝选择出QWidget部件的背景颜色组合。若开关按钮被按下,则其对应的颜色即被选中。
self.color = QtGui.QColor(0, 0, 0)
这行语句用来设置初始颜色,红绿栏三种颜色均为0时的颜色为黑色。
self.red = QtGui.QPushButton('Red', self)
self.red.setCheckable(True)
通过创建一个QPushButton并将其设置为可选择的,即得到我们想要的开关按钮。
self.connect(self.red, QtCore.SIGNAL('clicked()'), self.setRed)
我们将red开关按钮的clicked()信号和自定义的setRed()方法连接起来。
QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('cleanlooks'))
该行语句用来将应用程序的外观样式设置为cleanlooks的。之所以这样做时因为Linux下的默认样式存在一个小的缺陷,该缺陷使用户无法快速地分辨出开关按钮的两种状态。而采用cleanlooks样式外观的表现会好些。
if self.red.isChecked():
self.color.setRed(255)
else:
self.color.setRed(0)
我们使用if语句来判断开关按钮的状态并设置对应的颜色值。
self.square.setStyleSheet('QWidget {background-color: %s}' % self.color.name())
使用setStyleSHeet()方法改变QWidget部件的背景色。
PyQt4开关按钮ToggleButton的更多相关文章
- Android学习笔记-开关按钮ToggleButton和开关Switch
本节给大家介绍的Android基本UI控件是:开关按钮ToggleButton和开关Switch,这两个其实都是开关组件,只是后者需要在Android 4.0以后才能使用 所以AndroidManif ...
- Android——滚动视图(ScrollView)图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟
xml <?xml version="1.0" encoding="utf-8"?> <!--滚动视图--> <ScrollVie ...
- 状态开关按钮(ToggleButton)和开关(Switch)
ToggleButton支持的XML属性及相关方法1.android:checked----->setChecked(boolean) ----->设置该按钮是否被选中2.android: ...
- Android——图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟、图片透明度、滚动和时间选择器
activity_ui1.xml dth="wrap_content" android:layout_height="wrap_content" android ...
- ToggleButton与Switch
状态开关按钮togglebutton和开关switch 状态开关按钮togglebutton和开关switch是由button派生出来的,本质也是按钮,支持BUtton的各种属性,从功能上看,Togg ...
- Android ToggleButton Example--开关按钮
Android ToggleButton Example 在 Android 中, “android.widget.ToggleButton” 是个特殊的类,可以渲染出一个“开关按钮” ,顾名思义, ...
- Android笔记——Android自定义控件
目录: 1.自定义控件概述 01_什么是自定义控件 Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果 ...
- Android-小tips
1.只保留float类型的一位小数, String.format("%.1f", float值) 2.android edittext 限制输入内容: android:d ...
- Android开发学习清单
目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...
随机推荐
- if的另一个实现思路
在一些场景中需要根据根据一个传入的额值来做不同的处理,而且if有很多层,此时如果一直写if代码就会雍容.一种比较好的方法就是写一个map列出与if对应的情况,然后map的value就能放一些方法或者其 ...
- jackson2.1.4 序列化 通过给定Class映射 与抽象类的映射
//如果已知想要序列化的类型 可以使用TypeReference来进行处理 //List<MyBean> result = mapper.readValue(src, new TypeRe ...
- Android——列表视图 ListView(一)Arrayadapter
一.ArrayAdapter 只显示文字 activitylistview_layout.xml <?xml version="1.0" encoding="utf ...
- KafkaStream时间戳问题CreateTime = -1引起的程序中断
Exception in thread "app-8835188a-e0a0-46da-ac2a-6820ec197628-StreamThread-1" org.apache.k ...
- eclipse中使用maven创建项目JDK版本默认是1.5解决方法
请看解决方案: 1. 修改maven的settings.xml文件. 添加以下行,jdk版本改为自己需要的版本: <profile> <id>jdk-1.7</id> ...
- 网页图表Highcharts实践教程标之加入题副标题版权信息
网页图表Highcharts实践教程标之加入题副标题版权信息 Highcharts辅助元素 辅助元素图表的非必要元素.如标题.版权信息.标签.加载动态.它们不和图表数据发生关联,仅仅是额外说明一些基 ...
- jquery 表格排序,实时搜索表格内容
jquery 表格排序,实时搜索表格内容 演示 XML/HTML Code <table class="table-sort"> <thead> < ...
- Java 构造方法的执行过程(猜测)
先说明一点,这篇帖子的内容都是我自己思考的结果,如有误,请务必及时告诉我,非常感谢. 起由: public class NewThread implements Runnable{ Thread t; ...
- VS2008兼容安装
1. 直接安装出现问题:该项目的所有配置都需要系统提供对某些 平台的支持,但在此计算机上没有安装这些平台.因此无法加载该项目. 解决方法:先卸载原来安装的, 再设置安装包中的setup.exe的兼容性 ...
- par函数family参数-控制文字的字体
family用于控制文字的字体, 标准的取值范围为serif, sans, mono, 其中sans 为默认值 基本用法,代码示例: par(mfrow = c(1,3)) par(cex = 1.5 ...