QButtonGroup是一种常用的Qt控件,用于管理一组按钮的行为,通常用于单选或多选的场景。在本文中,我们将介绍QButtonGroup按钮组的常用API方法和信号,并给出一个简单的演示。
API方法和信号:
- addButton(button: QAbstractButton, id: int = -1) -> None:向按钮组中添加按钮,并为按钮指定一个唯一的id。
- removeButton(button: QAbstractButton) -> None:从按钮组中移除指定的按钮。
- setExclusive(exclusive: bool) -> None:设置按钮组的选择模式,如果exclusive为True,则表示只能选择一个按钮,如果exclusive为False,则表示可以选择多个按钮。
- checkedButton() -> QAbstractButton:返回当前选中的按钮。
- buttonClicked[int].connect(slot):当任意一个按钮被点击时,会发射该信号,并传递该按钮的id作为参数。
下面是一个简单的演示,有三个QRadioButton单选按钮控件,分别代表不同的颜色。当点击任意一个单选按钮时,程序窗口的背景颜色将改变为该单选按钮所代表的颜色。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout, QButtonGroup
from PyQt5.QtGui import QColor
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.rbtn1 = QRadioButton('Red', self)
self.rbtn2 = QRadioButton('Green', self)
self.rbtn3 = QRadioButton('Blue', self)
vbox = QVBoxLayout()
vbox.addWidget(self.rbtn1)
vbox.addWidget(self.rbtn2)
vbox.addWidget(self.rbtn3)
self.setLayout(vbox)
self.group = QButtonGroup()
self.group.addButton(self.rbtn1, 1)
self.group.addButton(self.rbtn2, 2)
self.group.addButton(self.rbtn3, 3)
self.group.buttonClicked[int].connect(self.onButtonClicked)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QButtonGroup')
self.show()
def onButtonClicked(self, id):
if id == 1:
self.setStyleSheet('background-color: red')
elif id == 2:
self.setStyleSheet('background-color: green')
elif id == 3:
self.setStyleSheet('background-color: blue')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在上面的代码中,我们创建了三个QRadioButton单选按钮控件,分别为'Red'、'Green'和'Blue'。在initUI()方法中,我们使用了一个垂直布局管理器来放置这三个单选按钮控件。
我们通过QButtonGroup来将这三个单选按钮控件绑定在一起,并为每个单选按钮控件指定一个唯一的id。通过连接buttonClicked()信号和onButtonClicked()方法,当任意一个单选按钮被点击时,我们根据其id来设置程序窗口的背景颜色。