当前位置: 首页 > news >正文

【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()

运行结果:

在这里插入图片描述

相关文章:

  • IDEA 2024.1.7 Java EE 无框架配置servlet
  • C# 简介以及与C、C++的区别
  • 前缀和的利用 前缀和的扩展问题
  • Figma 对图片进行模糊处理
  • 【记录】Python3|Linux下安装Virtualenv和virtualenvwrapper用于处理虚拟环境
  • nodejs去除本地文件html字符
  • 【蓝桥杯】每天一题,理解逻辑(3/90)【Leetcode 快乐数】
  • 利用 ArcGIS Pro 快速统计省域各市道路长度的实操指南
  • 专业工具,提供多种磁盘分区方案
  • Harmony os next~HarmonyOS Ability与页面跳转开发详解
  • 深入理解 C# 特性(Attributes):概念、应用与自定义
  • VS2022C#windows窗体应用程序调用DeepSeek API
  • Vue父子组件传递笔记
  • PostgreSQL 安装与使用
  • 安装与配置 STK-MATLAB 接口
  • 互联网摸鱼日报(2025-03-04)
  • android11使用gpio口控制led状态灯
  • 6. PromQL的metric name(在node exporter复制下来交给AI解释的)
  • k8s v1.28.15部署(kubeadm方式)
  • GAT从理论到实践——基于图注意力网络的节点特征计算与表示
  • 国际金价下跌,中概股多数上涨,穆迪下调美国主权信用评级
  • 南昌上饶领导干部任前公示:2人拟提名为县(市、区)长候选人
  • 终于越过萨巴伦卡这座高山,郑钦文感谢自己的耐心和专注
  • 特朗普访问卡塔尔,两国签署多项合作协议
  • 前四个月社会融资规模增量累计为16.34万亿元,比上年同期多3.61万亿元
  • 新能源汽车,告别混乱创新