QRadioButton是用于创建单选按钮的控件。每个单选按钮可以与其他单选按钮组合在一起,从而形成一个单选框组。用户只能选择组中的一个选项。
QRadioButton继承自QAbstractButton,因此它继承了QAbstractButton的所有方法和信号。此外,QRadioButton还有一些独有的方法和信号。下面是QRadioButton的一些常用API及其说明:
常用方法:
- setChecked(bool checked): 设置单选按钮的选中状态。如果checked为True,则选中单选按钮,否则不选中
- isChecked() -> bool: 返回单选按钮的选中状态。如果单选按钮被选中,返回True,否则返回False
- setText(str text): 设置单选按钮的文本标签
- text() -> str: 返回单选按钮的文本标签
常用信号:
toggled(bool checked): 单选按钮的选中状态发生变化时,发出此信号。如果单选按钮被选中,则checked为True,否则为False。
一、QRadioButton单选按钮控件API方法
下面是一个简单的演示程序,展示如何使用QRadioButton创建单选框组,并根据用户的选择执行相应的操作:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建三个单选按钮,并组合在一起形成单选框组
self.radio1 = QRadioButton('Option 1')
self.radio2 = QRadioButton('Option 2')
self.radio3 = QRadioButton('Option 3')
self.radio1.setChecked(True)
self.radio1.toggled.connect(self.on_radio_toggled)
self.radio2.toggled.connect(self.on_radio_toggled)
self.radio3.toggled.connect(self.on_radio_toggled)
# 显示用户选择的选项
self.result_label = QLabel('You selected: Option 1')
# 将单选按钮和标签添加到垂直布局中
layout = QVBoxLayout()
layout.addWidget(self.radio1)
layout.addWidget(self.radio2)
layout.addWidget(self.radio3)
layout.addWidget(self.result_label)
self.setLayout(layout)
self.setWindowTitle('QRadioButton Example')
def on_radio_toggled(self, checked):
# 显示用户选择的选项
if self.radio1.isChecked():
self.result_label.setText('You selected: Option 1')
elif self.radio2.isChecked():
self.result_label.setText('You selected: Option 2')
elif self.radio3.isChecked():
self.result_label.setText('You selected: Option 3')
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MyWidget()
w.show()
sys.exit(app.exec_())
运行该程序,会创建一个带有三个单选按钮的窗口。当用户选择某个选项时,程序会显示用户选择的选项。程序中的on_radio_toggled方法是单选按钮的toggled信号的槽函数,每当用户选择一个不同的选项时,此方法会被调用,更新结果标签的文本。
二、QRadioButton单选按钮控件信号详解
QRadioButton单选按钮控件有一个信号,即toggled()信号,当按钮被选中或取消选中时会发出该信号。toggled()信号有一个布尔类型参数,表示按钮是否被选中。我们可以利用该信号来实现单选按钮的互斥选择。
下面是一个简单的演示,有两个QRadioButton单选按钮控件,当其中一个按钮被选中时,另一个按钮就会被取消选中。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.rbtn1 = QRadioButton('Option 1', self)
self.rbtn1.move(50, 50)
self.rbtn1.setChecked(True)
self.rbtn2 = QRadioButton('Option 2', self)
self.rbtn2.move(50, 80)
vbox = QVBoxLayout()
vbox.addWidget(self.rbtn1)
vbox.addWidget(self.rbtn2)
self.setLayout(vbox)
self.rbtn1.toggled.connect(self.onRadioButtonClicked)
self.rbtn2.toggled.connect(self.onRadioButtonClicked)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('QRadioButton')
self.show()
def onRadioButtonClicked(self):
sender = self.sender()
if sender.isChecked():
print(sender.text() + ' is selected')
else:
print(sender.text() + ' is deselected')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在上面的代码中,我们创建了两个QRadioButton单选按钮控件,分别为'Option 1'和'Option 2'。在initUI()方法中,我们使用了一个垂直布局管理器来放置这两个单选按钮控件。默认情况下,'Option 1'按钮被选中。
我们通过连接toggled()信号和onRadioButtonClicked()方法来实现按钮的互斥选择。在onRadioButtonClicked()方法中,我们使用sender()方法获取信号源,判断按钮是否被选中,并打印相应的信息。