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 教程。