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部件的背景色。

时间: 2024-10-14 08:35:00

PyQt4开关按钮ToggleButton的相关文章

Android——图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟

xml <?xml version="1.0" encoding="utf-8"?> <!--滚动视图--> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_pare

开关按钮ToggleButton和开关Switch

本节引言: 本节给大家介绍的Android基本UI控件是:开关按钮ToggleButton和开关Switch,可能大家对着两个组件 并不熟悉,突然想起笔者的第一间外包公司,是否在wifi下联网的开关,竟然用的TextView,然后叫美工 且两个切换前后的图,然后代码中进行设置,当然点击TextView的时候判断状态,然后设置对应的背景... 好吧,也是醉了,好吧...本节讲解的两个其实都是开关组件,只是后者需要在Android 4.0以后才能使用 所以AndroidManifest.xml文件中

状态开关按钮(ToggleButton)

      Demo2\togglebutton_demo\src\main\res\layout\activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_paren

Android——图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟、图片透明度、滚动和时间选择器

activity_ui1.xml dth="wrap_content" android:layout_height="wrap_content" android:textOn=" " android:textOff=" " android:background="@drawable/qq" android:id="@+id/tob1"/> <AnalogClock andro

android中switch和toggleButton

状态开关按钮ToggleButton和开关Switch都是由Button派生而来,Button的所有属性和方法都适用,通常用于状态的切换. 1)activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_w

ToggleButton与Switch

状态开关按钮togglebutton和开关switch 状态开关按钮togglebutton和开关switch是由button派生出来的,本质也是按钮,支持BUtton的各种属性,从功能上看,ToggleButton.Switch与CheckBox非常的相似,他们都可以提供两种状态,不过更常用的是切换程序中的某种状态. android:textOn="纵向排列" -----状态打开时显示的文本        android:textOff="横向排列" -----状

2015年最新Android基础入门教程目录(完结版)

2015年最新Android基础入门教程目录(完结版) 标签(空格分隔): Android基础入门教程 前言: 关于<2015年最新Android基础入门教程目录>终于在今天落下了帷幕,全套教程 共148节已编写完毕,附上目录,关于教程的由来,笔者的情况和自学心得,资源分享 以及一些疑问等可戳:<2015最新Android基础入门教程>完结散花~ 下面是本系列教程的完整目录: 第一章:环境搭建与开发相关(已完结 10/10) Android基础入门教程--1.1 背景相关与系统架构

Android——监听事件总结1

各种监听事件 1.按钮 Button(1)点击监听 btn_1.setOnClickListener(new View.OnClickListener() { (2)长按监听 btn_1.setOnLongClickListener(new View.OnLongClickListener() { 2.单选框 RadioGroup radio_gp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 3.复选

安卓应用的界面编程(3)

第二组UI组件:TextView及其子类 1. TextView(不允许用户编辑文本内容)直接继承了View,同时是EditText(允许用户编辑文本内容)/Button两个UI组件类的父类.TextView的作用就是在界面上显示文本(类似JLabel) 下面是TextView的几个使用例子 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 android:orientatio