- PyQt 教程
- PyQt - 首页
- PyQt - 简介
- PyQt - 环境搭建
- PyQt - Hello World
- PyQt - 主要类
- PyQt - 使用 Qt Designer
- PyQt - 元对象
- PyQt 信号与槽
- PyQt - 信号和槽
- PyQt - 支持和信号
- PyQt - 未绑定和绑定信号
- PyQt - 使用 PyQtSignal 创建新信号
- PyQt - 连接、断开和发射信号
- PyQt - 槽装饰器
- PyQt - 槽连接
- PyQt 布局
- PyQt - 布局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控件
- PyQt - 基本控件
- PyQt - QLabel 控件
- PyQt - QLineEdit 控件
- PyQt - QPushButton 控件
- PyQt - QRadioButton 控件
- PyQt - QCheckBox 控件
- PyQt - QComboBox 控件
- PyQt - QSpinBox 控件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控件
- PyQt - QFontComboBox 控件
- PyQt - QDoubleSpinBox 控件
- PyQt - QToolBox 控件
- PyQt - QDialog 类
- PyQt - QMessageBox
- PyQt - 多文档界面
- PyQt - 拖放操作
- PyQt 绘图 API
- PyQt - 绘图 API
- PyQt 数据库
- PyQt - 数据库处理
- PyQt 核心知识
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 类
- PyQt 有用资源
- PyQt - 快速指南
- PyQt - 有用资源
- PyQt - 讨论
PyQt - QRadioButton 控件
QRadioButton 类对象呈现一个带有文本标签的可选择按钮。当用户需要从选项列表中选择一个选项时,通常会使用它。此控件由一个小圆形按钮表示,可以切换为打开(选中)或关闭(未选中)状态。此类派生自 QAbstractButton 类。
QRadioButton 自动互斥行为
默认情况下,单选按钮是自动互斥的。因此,父窗口中一次只能选择一个单选按钮。如果选择了一个,则先前选中的按钮将自动取消选中。单选按钮也可以放在 QGroupBox 或 QButtonGroup 中,以便在父窗口上创建多个可选择字段。
信号
每当 QRadioButton 切换状态时,它都会发出 toggled() 信号。可以将此信号连接到触发操作,以响应按钮状态的变化。我们还可以使用 isChecked() 方法来确定特定按钮当前是否已选中。
文本和图标
与其他类似按钮的控件(如 QPushButton)类似,QRadioButton 可以同时显示文本和可选图标。文本内容可以在初始化期间或使用 setText() 方法动态设置。还可以为文本指定快捷键以实现辅助功能。
QRadioButton 类的常用方法
以下列出的是 QRadioButton 类中最常用的方法。
| 序号 | 方法及描述 |
|---|---|
| 1 |
setChecked() 更改单选按钮的状态 |
| 2 |
setText() 设置与按钮关联的标签 |
| 3 |
text() 检索按钮的标题 |
| 4 |
isChecked() 检查按钮是否已选中 |
与 QRadioButton 对象关联的默认信号是 toggled(),尽管也可以实现从 QAbstractButton 类继承的其他信号。
示例
这里在顶级窗口上构造了两个互斥的单选按钮。
通过语句将 b1 的默认状态设置为选中状态:
Self.b1.setChecked(True)
两个按钮的 toggled() 信号都连接到 btnstate() 函数。使用 lambda 可以将信号源作为参数传递给函数。
self.b1.toggled.connect(lambda:self.btnstate(self.b1)) self.b2.toggled.connect(lambda:self.btnstate(self.b2))
btnstate() 函数检查发出 toggled() 信号的按钮的状态。
import sys
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from PyQt6.QtWidgets import QWidget,QApplication, QRadioButton,QHBoxLayout
class Radiodemo(QWidget):
def __init__(self, parent = None):
super(Radiodemo, self).__init__(parent)
layout = QHBoxLayout()
self.b1 = QRadioButton("Button1")
self.b1.setChecked(True)
self.b1.toggled.connect(lambda:self.btnstate(self.b1))
layout.addWidget(self.b1)
self.b2 = QRadioButton("Button2")
self.b2.toggled.connect(lambda:self.btnstate(self.b2))
layout.addWidget(self.b2)
self.setLayout(layout)
self.setWindowTitle("RadioButton demo")
def btnstate(self,b):
if b.text() == "Button1":
if b.isChecked() == True:
print (b.text()+" is selected")
else:
print (b.text()+" is deselected")
if b.text() == "Button2":
if b.isChecked() == True:
print (b.text()+" is selected")
else:
print (b.text()+" is deselected")
def main():
app = QApplication(sys.argv)
ex = Radiodemo()
ex.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
输出
以上代码产生以下输出:
Button1 is deselected Button2 is selected Button2 is deselected Button1 is selected
示例:分组单选按钮
在下面的示例中,我们将使用 QButtonGroup 创建一组单选按钮,以在每个组内强制执行互斥选择。
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QRadioButton, QButtonGroup
class RadioButtonsGroupExample(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
layout = QVBoxLayout()
self.group1 = QButtonGroup()
self.group2 = QButtonGroup()
self.radio_button1 = QRadioButton("Option 1")
self.radio_button2 = QRadioButton("Option 2")
self.radio_button3 = QRadioButton("Option 3")
self.radio_button4 = QRadioButton("Option 4")
layout.addWidget(self.radio_button1)
layout.addWidget(self.radio_button2)
layout.addWidget(self.radio_button3)
layout.addWidget(self.radio_button4)
self.group1.addButton(self.radio_button1)
self.group1.addButton(self.radio_button2)
self.group2.addButton(self.radio_button3)
self.group2.addButton(self.radio_button4)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = RadioButtonsGroupExample()
ex.show()
sys.exit(app.exec())
输出
以上代码产生以下输出: