PyQt5学习记录(八): Toggle button

切换按钮是一个特殊模式的QPushButton(还是一个按钮)。它是一个按钮,有两种状态:按下和不按下。我们点击这两个状态之间切换。在有些情况下这种功能很适合。

源码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/11/2 上午9:47
# @Author  : hukezhu
# @Site    : 
# @File    : 1102-01-Toggle button.py
# @Software: PyCharm

"""
    在这个例子中,我们创建了三个切换按钮。他们将控制背景颜色QFrame。

"""

import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame,QApplication)
from PyQt5.QtGui import QColor

class Example(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        #初始化设置为黑色
        self.col = QColor(0,0,0)

        redb = QPushButton('Red   ',self)
        redb.setCheckable(True)
        redb.move(10,10)

        redb.clicked[bool].connect(self.setColor)

        greenb = QPushButton('Green',self)
        greenb.setCheckable(True)
        greenb.move(10,60)

        greenb.clicked[bool].connect(self.setColor)

        blueb = QPushButton('Blue  ',self)
        blueb.setCheckable(True)
        blueb.move(10,110)

        blueb.clicked[bool].connect(self.setColor)

        self.square = QFrame(self)
        self.square.setGeometry(150,20,100,100)
        self.square.setStyleSheet("QWidget { background-color : %s}" % self.col.name())

        self.setGeometry(300,300,280,170)
        self.setWindowTitle('Toggle button')
        self.show()


    def setColor(self,pressed):
        source = self.sender()

        if pressed:
            val = 255
        else:
            val = 0

        if source.text() == 'Red':
            self.col.setRed(val)
        elif source.text() == 'Green':
            self.col.setGreen(val)
        else:
            self.col.setBlue(val)

        self.square.setStyleSheet("QFrame { background-color:%s}" % self.col.name())


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在这个例子中,我们创建了三个按钮和一个QWidget。我们设置QWidget的背景颜色为黑色。切换按钮将切换颜色值的红色、绿色和蓝色部分。背景颜色取决于按下哪个开关按钮。

我们使用样式表来改变背景色。样式表是setstylesheet()方法更新。

运行效果图:

PyQt5学习记录(八): Toggle button_第1张图片
image.png

你可能感兴趣的:(PyQt5学习记录(八): Toggle button)