首页 PyQt5教程 QButtonGroup按钮组的使用方法addButton()、removeButton()、setExclusive()、checkedButton()和信号buttonClicked使用
pay pay
教程目录

QButtonGroup按钮组的使用方法addButton()、removeButton()、setExclusive()、checkedButton()和信号buttonClicked使用

日期: 四月 25, 2023, 9:04 a.m.
栏目: PyQt5教程
阅读: 476
作者: Python自学网-村长

摘要: QButtonGroup是一种常用的Qt控件,用于管理一组按钮的行为,通常用于单选或多选的场景。在本文中,我们将介绍QButtonGroup按钮组的常用API方法和信号,并给出一个简单的演示。

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来设置程序窗口的背景颜色。

部分文字内容为【Python自学网】原创作品,转载请注明出处!视频内容已申请版权,切勿转载!
回顶部