PyQT5-QPushButton切换按钮

时间:2022-11-29 19:35:15
 1 """
 2     QPushButton:切换按钮就是QPsuhButton的一种特殊模式,他有两种状态:按下和未按下。我们在点击的时候切换两种状态,有很多场景会用到这个功能
 3     Author:dengyexun
 4     DateTime:2018.11.20
 5 """
 6 from PyQt5.QtWidgets import QWidget, QPushButton, QFrame, QApplication
 7 from PyQt5.QtGui import QColor
 8 import sys
 9 
10 class Example(QWidget):
11     def __init__(self):
12         super().__init__()
13 
14         self.initGUI()
15 
16     def initGUI(self):
17         # 功能区
18         self.col = QColor(0, 0, 0)    # 颜色句柄
19         # 初始化pushButton
20         redb = QPushButton('Red', self)
21         redb.setCheckable(True)
22         redb.move(60, 60)
23         # 槽与信号连接.当redb被点击时,传入一个bool值给setColor的pressed参数
24         redb.clicked[bool].connect(self.setColor)
25 
26         greenb = QPushButton('Green', self)
27         greenb.setCheckable(True)
28         greenb.move(60, 80)
29         greenb.clicked[bool].connect(self.setColor)
30 
31         blueb = QPushButton('Blue', self)
32         blueb.setCheckable(True)
33         blueb.move(60, 100)
34         blueb.clicked[bool].connect(self.setColor)
35 
36         # QFrame对象
37         self.square = QFrame(self)
38         self.square.setGeometry(110,110,200,200)
39         # 更改QWidget的样式风格
40         self.square.setStyleSheet("QWidget {backgroud-color:%s}" % self.col.name())
41 
42 
43         # Frame
44         self.setGeometry(300, 300, 300, 200)
45         self.setWindowTitle("toggle button")
46         self.show()
47 
48     def setColor(self, pressed):
49         """
50         自定义槽函数
51         :param pressed: 鼠标被按下的状态
52         :return:
53         """
54         # 得到切换按钮的信息,哪一个信号被触发了
55         source = self.sender()
56         # 当按下按钮
57         if pressed:
58             val = 255
59         else:
60             val = 0
61         # 判断这个信号的文本内容
62         if source.text() == 'Red':
63             self.col.setRed(val)
64         elif source.text() == 'Green':
65             self.col.setGreen(val)
66         else:
67             self.col.setBlue(val)
68         # 更改QFrame的样式风格,设置背景为特定的颜色
69         color = self.col.name()     # 样式的背景色编码
70         self.square.setStyleSheet("QFrame {background-color:%s}" % self.col.name())
71 
72 
73         print('ok')
74 
75 
76 if __name__ == '__main__':
77     app = QApplication(sys.argv)
78     ex = Example()
79     sys.exit(app.exec_())