切换按钮是一个特殊模式的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()方法更新。
运行效果图: