切換按鈕是一個(gè)特殊模式的QPushButton(還是一個(gè)按鈕)。它是一個(gè)按鈕湾碎,有兩種狀態(tài):按下和不按下尸闸。我們點(diǎn)擊這兩個(gè)狀態(tài)之間切換。在有些情況下這種功能很適合兵拢。
源碼:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/11/2 上午9:47
# @Author : hukezhu
# @Site :
# @File : 1102-01-Toggle button.py
# @Software: PyCharm
"""
在這個(gè)例子中翻斟,我們創(chuàng)建了三個(gè)切換按鈕。他們將控制背景顏色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):
#初始化設(shè)置為黑色
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_())
在這個(gè)例子中访惜,我們創(chuàng)建了三個(gè)按鈕和一個(gè)QWidget。我們設(shè)置QWidget的背景顏色為黑色腻扇。切換按鈕將切換顏色值的紅色债热、綠色和藍(lán)色部分。背景顏色取決于按下哪個(gè)開關(guān)按鈕幼苛。
我們使用樣式表來改變背景色窒篱。樣式表是setstylesheet()方法更新。
運(yùn)行效果圖: