美文网首页
PyQt5 Toggle button(状态按钮-->按钮只有两

PyQt5 Toggle button(状态按钮-->按钮只有两

作者: _Mirage | 来源:发表于2020-04-04 10:31 被阅读0次

A toggle button is a QPushButton in a special mode. It is a button that has two states: pressed and not pressed. We toggle between these two states by clicking on it. There are situations where this functionality fits well.

代码:

# coding='utf-8'

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


class Gui(QWidget):
    def __init__(self):
        super(Gui, self).__init__()
        self.start()

    def start(self):
        # 设置初始颜色:黑色,创建成类属性还是为了类内通信
        self.color = QColor(0, 0, 0)
        # 创建按了后将颜色改成红色的选择按钮
        red_button = QPushButton('红色', self)
        # 这个就是让按钮'特殊化'的设置-->\
        # 让按钮变得只有两种状态:选中/未选中
        red_button.setCheckable(True)
        red_button.move(10, 10)
        # 给按钮(event source)绑定slot
        # event target(signal) 是clicked,给信号加上中括号\
        # 然后括号里的类型就是传递给slot参数的类型
        red_button.clicked[bool].connect(self.set_color)

        # 创建按了后将颜色改成绿色的选择按钮
        green_button = QPushButton('绿色', self)
        green_button.setCheckable(True)
        green_button.move(10, 60)
        green_button.clicked[bool].connect(self.set_color)

        # 创建按了后将颜色改成蓝色的选择按钮
        blue_button = QPushButton('蓝色', self)
        blue_button.setCheckable(True)
        blue_button.move(10, 110)
        blue_button.clicked[bool].connect(self.set_color)

        # 这里注意所有组件都要加上父组件的参数-->表示是存在于哪个组件上
        self.squre = QFrame(self)
        # 注意子框架组件必须要设置大小它才能显示出来-->和Tkiner框架一样
        self.squre.setGeometry(150, 20, 100, 100)
        # 利用setStyleSheet给框架背景设置颜色属性
        self.squre.setStyleSheet(
            'QWidget {background-color: %s}' % self.color.name()
        )

        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('选择按钮')
        self.show()

    def set_color(self, pressed):
        # 利用sender来辨别是哪个按钮被按下了
        sender = self.sender()
        if pressed:
            # 如果某个按钮是按下的-->\
            #   那么我们就在最终颜色里添加这个按钮表示的颜色
            val = 255
        else:
            # 如果某个按钮没按下-->\
            #   就把最终颜色里这个按钮表示的颜色去掉
            val = 0

        # 注意因为这里颜色用的是RGB表示法,\
        #   这三种颜色的不同配比可以产生任何颜色
        if sender.text() == '红色':
            # 把颜色里的红色成分设置成(255(纯红色)/0(没有红色))
            self.color.setRed(val)
        elif sender.text() == '绿色':
            # 把颜色里的绿色成分设置成(255(纯绿色)/0(没有绿色))
            self.color.setGreen(val)
        else:
            # 把颜色里的蓝色成分设置成(255(纯蓝色)/0(没有蓝色))
            self.color.setBlue(val)

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


app = QApplication(sys.argv)
gui = Gui()
sys.exit(app.exec_())

运行结果: image.png
image.png

255红+255绿 ---->黄


image.png
RGB都是255 --> 白
image.png

相关文章

网友评论

      本文标题:PyQt5 Toggle button(状态按钮-->按钮只有两

      本文链接:https://www.haomeiwen.com/subject/hwjdphtx.html