PyQt QRadioButton
最后修改于 2023 年 8 月 24 日
在本文中,我们将展示如何使用 QRadioButton 部件。
访问 PyQt6 教程,或列出所有 PyQt 教程。
,阅读QRadioButton
QRadioButton
是一个可以打开或关闭的按钮。单选按钮提供多个选项。在一组单选按钮中,一次只能选中一个;如果用户选择另一个按钮,之前选中的按钮将被关闭。
单选按钮默认是自动互斥的。如果我们想拥有多个独立的单选按钮组,可以将它们放入 QButtonGroup
中。
每当一个按钮被打开或关闭时,它会发出 toggled
信号。
注意: 如果一个单选按钮已经被选中,而我们又选择了另一个单选按钮,那么会发出两个
toggled
信号。PyQt QRadioButton 示例
下面是一个使用 QRadioButtons
的简单示例。
radio_button.py
#!/usr/bin/python from PyQt6.QtWidgets import (QWidget, QRadioButton, QHBoxLayout, QVBoxLayout, QLabel, QApplication) import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout() hbox = QHBoxLayout() rb1 = QRadioButton("Large", self) rb1.toggled.connect(self.updateLabel) rb2 = QRadioButton("Middle", self) rb2.toggled.connect(self.updateLabel) rb3 = QRadioButton("Small", self) rb3.toggled.connect(self.updateLabel) self.label = QLabel('', self) hbox.addWidget(rb1) hbox.addWidget(rb2) hbox.addWidget(rb3) vbox.addSpacing(15) vbox.addLayout(hbox) vbox.addWidget(self.label) self.setLayout(vbox) self.setGeometry(400, 300, 350, 250) self.setWindowTitle('QRadioButton') self.show() def updateLabel(self, _): rbtn = self.sender() if rbtn.isChecked() == True: self.label.setText(rbtn.text()) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
我们有三个单选按钮。一次只能选择一个按钮。所选单选按钮的文本将显示在旁边的标签中。
rb1 = QRadioButton("Large", self)
一个 QRadioButton
被创建。第一个参数是它的文本标签。
rb1.toggled.connect(self.updateLabel)
当我们点击单选按钮时,会发出 toggled
信号。
def updateLabel(self, _): rbtn = self.sender() if rbtn.isChecked() == True: self.label.setText(rbtn.text())
在 updateLabel
处理函数中,我们使用 sender
来确定调用它的部件。isChecked
函数检查单选按钮是否被打开。如果是,我们用它的文本来更新标签。

QButtonGroup 中的 QRadioButton
QButtonGroup
类提供了一个容器来组织按钮部件组。
radio_button2.py
#!/usr/bin/python from PyQt6.QtWidgets import (QWidget, QRadioButton, QHBoxLayout, QVBoxLayout, QButtonGroup, QLabel, QApplication) import sys class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout() hbox1 = QHBoxLayout() bg1 = QButtonGroup(self) rb1 = QRadioButton('Large', self) rb1.toggled.connect(self.updateLabel1) rb2 = QRadioButton('Middle', self) rb2.toggled.connect(self.updateLabel1) rb3 = QRadioButton('Small', self) rb3.toggled.connect(self.updateLabel1) hbox2 = QHBoxLayout() bg2 = QButtonGroup(self) rb4 = QRadioButton('Red', self) rb4.toggled.connect(self.updateLabel2) rb5 = QRadioButton('Green', self) rb5.toggled.connect(self.updateLabel2) rb6 = QRadioButton('Blue', self) rb6.toggled.connect(self.updateLabel2) self.label1 = QLabel('', self) self.label2 = QLabel('', self) bg1.addButton(rb1) bg1.addButton(rb2) bg1.addButton(rb3) bg2.addButton(rb4) bg2.addButton(rb5) bg2.addButton(rb6) hbox1.addWidget(rb1) hbox1.addWidget(rb2) hbox1.addWidget(rb3) hbox2.addWidget(rb4) hbox2.addWidget(rb5) hbox2.addWidget(rb6) vbox.addLayout(hbox1) vbox.addLayout(hbox2) vbox.addWidget(self.label1) vbox.addWidget(self.label2) self.setLayout(vbox) self.setGeometry(300, 300, 350, 250) self.setWindowTitle('QRadioButton') self.show() def updateLabel1(self, _): rbtn = self.sender() if rbtn.isChecked() == True: self.label1.setText(rbtn.text()) def updateLabel2(self, _): rbtn = self.sender() if rbtn.isChecked() == True: self.label2.setText(rbtn.text()) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
在这个示例中,我们有两组单选按钮。为了将它们分开,我们将它们放入两个 QButtonGroup
中。
bg1 = QButtonGroup(self)
一个 QButtonGroup
被创建。它是一个用于管理按钮的容器部件。它不提供任何视觉表示。
bg1.addButton(rb1) bg1.addButton(rb2) bg1.addButton(rb3) bg2.addButton(rb4) bg2.addButton(rb5) bg2.addButton(rb6)
通过 addButton
函数将按钮放入按钮组中。

在本文中,我们学习了如何使用 PyQt 的 QRadioButton
。
作者
列出所有 PyQt 教程。