码迷,mamicode.com
首页 > 其他好文 > 详细

PyQt4开关按钮ToggleButton

时间:2016-04-05 23:10:10      阅读:474      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/moonlightpoet/p/5357101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!