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_())