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


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

Pyqt5系列(三)-基本界面组件之Button(2)

Button,作为界面中触发动作请求或者命令的一种方式,作为与用户进行的交互操作。PyQt中的Button根据不同的使用场景划分为不同的表现形式。Button的基类QAbstractButton,提供...
  • zhulove86
  • zhulove86
  • 2016年09月04日 17:01
  • 4151

PyQt5系列教程(七)控件

软硬件环境 Windows 10 Python 3.4.2 PyQt 5.5.1 PyCharm 5.0.4 前言控件是PyQt应用程序的基石。PyQt5自带很多不同的控件,包括像button、che...
  • djstavaV
  • djstavaV
  • 2016年02月25日 11:11
  • 3864

Python实例讲解 -- wxpython 基本的控件 (按钮)

使用按钮工作   在wxPython 中有很多不同类型的按钮。这一节,我们将讨论文本按钮、位图按钮、开关按钮(toggle buttons )和通用(generic )按钮。   ...
  • gzh0222
  • gzh0222
  • 2013年08月27日 10:00
  • 4887

Pyqt5系列(三)-基本界面组件之Button(1)

Button,作为界面中触发动作请求或者命令的一种方式,作为与用户进行的交互操作。PyQt中的Button根据不同的使用场景划分为不同的表现形式。Button的基类QAbstractButton,提供...
  • zhulove86
  • zhulove86
  • 2016年09月04日 11:20
  • 11294

PyQt5教程-12-切换按钮

切换按钮是QPushButton的特殊模式。它是一个具有两种状态的按钮:按压和未按压。我们通过这两种状态之间的切换来修改其它内容。#!/usr/bin/python3 # -*- coding: ut...
  • weiaitaowang
  • weiaitaowang
  • 2016年08月03日 14:50
  • 1772

PyQT之多窗口切换

最近做个软件,用PyQT写的,在实现菜单栏点击弹出新窗口的时候严重被卡壳,发现用WxPython的思想和方式来做完全无法实现。PyQT的中文资料实在是太少了。看了点英文资料和QT的资料,逆推PyQT的...
  • sollor525
  • sollor525
  • 2014年10月14日 14:45
  • 7169

开关按钮(ToggleButton)与开关(Switch)的功能与用法

状态开关按钮(ToggleButton)与开关(Switch)也是由 Button 派生出来的,因此它们的本质也是按钮,Button 支持的各种属性、方法也适用于 ToggleButton 和 Swi...
  • Rainary
  • Rainary
  • 2017年05月31日 19:41
  • 394

ToggleButton状态开关控件的使用

android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="f...
  • u011955252
  • u011955252
  • 2015年12月15日 14:36
  • 1273

PyQt5初级教程--PyQt5中部件[8/13]

想用PyQt5写GUI,但是网上的PyQt5资源太少了,找到一个英文的,翻译一下,和学习PyQt5的同学共勉! (本系列中所有代码在windows7 64位[]/Python 3.4.3 32bit/...
  • neverstop_2009
  • neverstop_2009
  • 2015年08月08日 23:25
  • 2147

PyQt5退出按钮

import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton from PyQt5.QtCore import Q...
  • u013511642
  • u013511642
  • 2015年04月28日 20:58
  • 2825
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PyQt5:ToggleButton开关按钮(24)
举报原因:
原因补充:

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