PyQt5:ToggleButton开关按钮(24)

原创 2016年06月01日 00:45:06

学习《PyQt4入门指南 PDF中文版.pdf 》笔记

PyQt5没有开关按钮部件。但是我们可以使用在特殊状态下的QPushButton部件来创建开关按钮。而所谓的开关的按钮就是一个具有按下和未按下两种状态的普通按钮。用户可以通过点击按钮来切换其开或关状态。在一些情况下,这个特性会非常好用。

<span style="font-size:12px;">#!/usr/bin/python
# togglebutton.py

from PyQt5.QtWidgets import QApplication, QPushButton, QStyleFactory
from PyQt5 import QtWidgets
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor

class ToggleButton(QtWidgets.QWidget):
    def __init__(self, parent= None):
        QtWidgets.QWidget.__init__(self)
        
        self.color = QColor(0, 0, 0)
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('ToggleButton')
        self.red = QPushButton('Red',  self)
        self.red.setCheckable(True)
        self.red.move(10, 10)
        self.red.clicked.connect(self.setRed)
        self.green = QPushButton('Green',  self)
        self.green.setCheckable(True)
        self.green.move(10, 60)
        self.green.clicked.connect(self.setGreen)
        self.blue = QPushButton('Blue',  self)
        self.blue.setCheckable(True)
        self.blue.move(10, 110)
        self.blue.clicked.connect(self.setBlue)
        
        self.square = QtWidgets.QWidget(self)
        self.square.setGeometry(150, 20, 100, 100)
        self.square.setStyleSheet('QWidget{background-color:%s}'%self.color.name())
        QApplication.setStyle(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())

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    qb = ToggleButton()
    qb.show()
    sys.exit(app.exec_())</span>

在这个例子中,我们创建了三个开关按钮和一个QWidget部件,并将QWidget部件的背景颜色设置为黑色。用户通过开关按钮从红、绿、蓝选择出QWidget部件的背景颜色组合。若开关按钮被按下,则其对应的颜色即被选中。

         self.color= QColor(0, 0, 0)

         这行语句用来设置初始颜色,红绿蓝三种颜色值均为0时的颜色为黑色。

         self.red= QPushButton('Red',  self)

         self.red.setCheckable(True)

         通过创建一个QPushButton并将其设置为可被选择的,即得到我们想要的开关按钮。

         self.red.clicked.connect(self.setRed)

         我们将red开关按钮的clicked()信号和自定义的setRed()方法连接起来。

         QApplication.setStyle(QStyleFactory.create('cleanlooks'))

         该行语句用来将应用程序的外观样式设置为cleanlooks的。之所以这样做事因为Linux系统下的默认样式存在一个小的设计缺陷,该缺陷使用用户无法快速的分辨出开关按钮的两种状态。而采用cleanlooks样式外观的表现会好些(书上说的,具体不知道真的假的。)。

         ifself.red.isChecked():

               self.color.setRed(255)

          else:

                self.color.setRed(0)

         我们使用if语句来判断开关按钮的状态并设置对应的颜色值。

         self.square.setStyleSheet('QWidget{background-color:%s}'%self.color.name())

         使用setStyleSheet()方法改变QWidget部件的背景色。


版权声明:本文为博主原创文章,未经博主允许不得转载。

python下用dbfread操作DBF文件

今天要从同事发给我的一个文件中统计一些数字,一看还是数据库文件,以DBF结尾,近1个G呢。电脑上也没装ACCESS等数据库管理软件。后来找了个DBF阅读器,发现虽然能打开,但是筛选什么的不方便,也不好...

python连接odbc

在Linux中,如果要使用ODBC并连到MS SQLServer,我们需要为Linux操作系统安装并配置好UnixODBC模块。很多教程中的操作步骤比较复杂,我将其中关键步骤精简到三步: 本教程以刚...

界面编程之基本界面组件(5)ToggleButton(状态开关按钮)

ToggleButton用于切换程序中的某种状态。 ToggleButton有三个XML属性:android:checked,设置该按钮是否被选中,对应的方法为setChecked(bool...

android ToggleButton 开关按钮

  • 2013年03月16日 21:16
  • 1MB
  • 下载

使用ToggleButton按钮实现开关效果

关于ToggleButton,有选中和未选中状态。在两种情况下还需要设置不同的文本内容。ToggleButton有以下几个属性: android:isChecked="true"; android...

使用ToggleButton按钮实现开关效果

  • 2016年03月17日 20:15
  • 1.07MB
  • 下载

Android---19---ToggleButton开关按钮

MainActivity.java:import android.app.Activity; import android.os.Bundle; import android.view.Menu; i...

仿苹果开关按钮 ToggleButton

  • 2015年07月25日 16:01
  • 1.89MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PyQt5:ToggleButton开关按钮(24)
举报原因:
原因补充:

(最多只允许输入30个字)