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 ...
随机推荐
- zookeeper原生API做java客户端
简介 本文是使用apache提供的原生api做zookeeper客户端 jar包 zookeeper-3.4.5.jar Demo package bjsxt.zookeeper.base; im ...
- SparkSQL ThriftServer服务的使用和程序中JDBC的连接
SparkSQL ThriftServer服务的使用和程序中JDBC的连接 此时要注意版本问题,我第一次用的是hive2.1.1的,因为要用sparksql的hive服务,但是sparksql默认的是 ...
- C语言 · 成绩的等级输出
输入一个百分制的成绩t后,按下式输出它的等级.等级为:90~100为A,80~89为B,70~79为C,60~69为D,0~59为E. 样例输入 98 样例输出 A #include<std ...
- SQL Server 大数据量insert into xx select慢的解决方案
最近项目有个需求,把一张表中的数据根据一定条件增删改到另外一张表.按理说这是个很简单的SQL.可是在实际过程中却出现了超级长时间的执行过程. 后来经过排查发现是大数据量insert into xx s ...
- socket编程函数
连接 TCP/IP协议规定网络数据传输应采用大端字节序 socket地址 struct sockaddr{ unsigned short sa_family; char sa_data[14]; }; ...
- Java-ThreadLocal,Java中特殊的线程绑定机制
在DRP项目中,我们使用了ThreadLocal来创建Connection连接,避免了一直以参数的形式将Connection向下传递(传递connection的目的是由于jdbc事务要求确保使用同一个 ...
- JPA多对多关联
关于JPA多对多关系,这是使用学生与教师来表示.一个Student由多个Teacher教,同样一个Teacher也可以教多个学生.Student类如下: package com.yichun.bean ...
- VMware提示:已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。解决方案
新买了个笔记本,在学习大数据的时候装上VMWare,运行虚拟机发现提示无法执行64位操作.本人系统是win7,64位系统. 之后就是一顿度娘,发现千篇一律都是检测CPU支不支持虚拟化,支持的话去BIO ...
- linux -- ubuntu桌面版安装xampp
首先,请从www.xampp.org下载最新版XAMPP. 安装 如果是xampp压缩文件 将xampp压缩文件复制到/opt下并解压.如果你计算机没有/opt目录,用 “sudo mkdir/opt ...
- 【AngularJS】AngularJS整合Springmvc、Mybatis环境搭建
近期想学习AngularJS的使用,网上搜了一圈后,折腾了半天解决bug后,成功使用AngularJS整合Springmvc.Spring.Mybatis搭建了一个开发环境.(这里Spring使用的版 ...