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 ...
随机推荐
- 基于jquery网站左侧下拉菜单
网站左侧下拉菜单jQuery代码.这是一款蓝色风格的适合做后台下拉菜单代码.效果图如下: 在线预览 源码下载 实现的代码: <div class="container"& ...
- egret请求参数
egret的文档还不错,不过http请求参数的文档居然没有,于是自己摸索了一下, 发现原来是直接传字符串参数就可以了.于是封装了一个类,方便使用. class RequestParam { publi ...
- C语言 · 陶陶摘苹果
算法提高 陶陶摘苹果 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个3 ...
- 轻量级ORM框架Dapper应用五:使用Dapper实现Join操作
在这篇文章中,讲解如何使用Dapper使用Inner join的操作 1.新创建两张表:Users表和Product表 Users表定义如下: CREATE TABLE [dbo].[Users]( ...
- JS实现复制到剪贴板(兼容FF/Chrome/Safari所有浏览器)
现在浏览器种类也越来越多,诸如 IE.Firefox.Chrome.Safari等等,因此现在要实现一个js复制内容到剪贴板的小功能就不是一件那么容易的事了. 在FLASH 9 时代,有一个通杀所有浏 ...
- 消息中间件系列之ActiveMQ的简单安装
本次测试使用一台ip为192.168.2.12的虚拟机 一.解压压缩包 tar -zxvf apache-activemq-5.14.4-bin.tar.gz 二.启动activemq 进入到bin目 ...
- Zookeeper leader选举
让我们分析如何在ZooKeeper集合中选举leader节点.考虑一个集群中有N个节点.leader选举的过程如下: 所有节点创建具有相同路径 /app/leader_election/guid_ 的 ...
- C# 发邮件 服务器响应为: 5.7.0 Must issue a STARTTLS command first
The SMTP server requires a secure connection or the client was not authenticated. The server respons ...
- (转)关于三星cortex A9 Sate4412 开发板 uboot 启动的一些问题释疑
说明:本文转载自:http://blog.csdn.net/gooogleman/article/details/17238079 作者:gooogleman 日 ...
- DTD -- XML验证
DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. DTD简介 内部的 DOCTYPE 声明 假如 DTD 被包含在您的 ...