【pyqt】(十一)单选框

控件-单选框

单选框的类名为QRadioBox,在学习新的控件的时候, 需要掌握的内容主要除了属性之外,其信号触发方法也非常重要。还可以利用Designer来辅助我们进行学习,尤其是利用Designer的属性展示和设置。

单选框中,最重要的两个属性为checkablecheckedcheckable用来指定这个单选框是否可以被选择,checked表示该单选框目前被选中的状态,我们也可以在最开始设计的时候将某个单选框的checked属性设置为true,这样表示默认选择这一项。其信号传递可以直接使用clicked方法,这样和普通的按钮一样的方法显得更加统一
在这里插入图片描述

如果有多项需要使用多选框的情况,需要使用group将其分隔开来才能正常使用

在这里插入图片描述

【代码示例】设计两个按钮组,然后利用一个标签信号和槽函数来输出这些按钮组中选择的内容

from PySide6.QtWidgets import QApplication, QWidget, QButtonGroup, QLabel, QRadioButton, QHBoxLayout, QVBoxLayout


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        # 按钮组1
        self.group1 = QButtonGroup(self)
        label1 = QLabel("请选择编程语言")
        btn1 = QRadioButton("Python")
        btn2 = QRadioButton("Java")
        btn3 = QRadioButton("C++")
        self.group1.addButton(btn1, 1)  # 第二个参数是ID,方便区分
        self.group1.addButton(btn2, 2)
        self.group1.addButton(btn3, 3)

        # 按钮组2
        self.group2 = QButtonGroup(self)
        label2 = QLabel("请选择时间")
        btn4 = QRadioButton("30 min")
        btn5 = QRadioButton("1 hour")
        btn6 = QRadioButton("2 hours")
        self.group2.addButton(btn4, 4)
        self.group2.addButton(btn5, 5)
        self.group2.addButton(btn6, 6)

        # 显示标签
        self.label_show = QLabel("请选择编程语言和时间")

        # 调整布局
        h1 = QHBoxLayout()
        h1.addWidget(label1)
        h1.addWidget(btn1)
        h1.addWidget(btn2)
        h1.addWidget(btn3)

        h2 = QHBoxLayout()
        h2.addWidget(label2)
        h2.addWidget(btn4)
        h2.addWidget(btn5)
        h2.addWidget(btn6)

        mainlayout = QVBoxLayout()
        mainlayout.addWidget(self.label_show)
        mainlayout.addLayout(h1)  # 使用 addLayout 而不是 addWidget
        mainlayout.addLayout(h2)

        self.setLayout(mainlayout)

        # 连接按钮组的点击信号到槽函数
        self.group1.buttonClicked.connect(self.change_text)
        self.group2.buttonClicked.connect(self.change_text)

    def change_text(self):
        language_btn = self.group1.checkedButton()  # 返回按钮组1中选中的按钮
        time_btn = self.group2.checkedButton()  # 返回按钮组2中选中的按钮

        if language_btn and time_btn:
            self.label_show.setText(f'你选择的编程语言是:{language_btn.text()}, 你选择写代码的时间是 {time_btn.text()}')


if __name__ == '__main__':
    app = QApplication([])
    window = MyWindow()
    window.show()
    app.exec()

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值