QRadioButton多组互斥问题

文章介绍了在PyQt5中,如何使用QButtonGroup来管理和分组QRadioButton,避免了创建多个父控件带来的资源浪费和管理复杂性。QButtonGroup提供了抽象的按钮容器,使得互斥分组更为便捷,后续还有更多扩展功能。
摘要由CSDN通过智能技术生成

一、前言

​ 当同一个程序中存在多组radiobutton时,怎么区分各组按钮?

二、解决方案

1、 创建共同的父控件

from PyQt5.Qt import *
import sys


app = QApplication(sys.argv)

window = QWidget()
window.setWindowTitle("QRadioButton-功能测试")
window.resize(500, 500)

#*******创建共同的父控件*******开始
w1 = QWidget(window)
w1.resize(200, 200)
w1.setStyleSheet("background-color: blue;")
w1.move(50, 50)

w2 = QWidget(window)
w2.resize(200, 200)
w2.setStyleSheet("background-color: yellow;")
w2.move(w1.x() + w1.width(), w1.y())

rb_nan = QRadioButton("男", w1)
rb_nan.move(10, 10)
rb_nan.setChecked(True)

rb_nv = QRadioButton("女", w1)
rb_nv.move(10, 50)
rb_nv.toggled.connect(lambda isChecked: print(isChecked))

rb_yes = QRadioButton("yes", w2)
rb_yes.move(10, 10)
rb_no = QRadioButton("no", w2)
rb_no.move(10, 50)
#*******创建共同的父控件*******结束

# 2.3 展示控件
window.show()
# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())
  1. 结果
    在这里插入图片描述

    注意:为了分组创建多个父控件,会占用多余的资源,且管理并不方便,所以不推荐此种方法,而更推荐下面的方法。

2、 创建 QButtonGroup

  1. 什么是抽象按钮组?

    • 提供 一个抽象的按钮容器, 可以将多个按钮划分为一组(类似于人为的说:哪些按钮在一组了),由于继承自QObject,故没有实体效果(即不能可视化)
    • 一般放的都是可以被检查的按钮
  2. 代码

    
    from PyQt5.Qt import *
    import sys
    
    app = QApplication(sys.argv)
    
    window = QWidget()
    window.setWindowTitle("按钮组的使用")
    window.resize(500, 500)
    
    #*******QButtonGroup 测试*******开始
    # 创建四个单选按钮
    # 男女
    r_male = QRadioButton("男", window)
    r_female = QRadioButton("女", window)
    r_male.move(100, 100)
    r_female.move(100, 150)
    r_male.setChecked(True)
    
    sex_group = QButtonGroup(window)
    sex_group.addButton(r_male, 1)
    sex_group.addButton(r_female, 2)
    
    
    # 是否
    r_yes = QRadioButton("是", window)
    r_no = QRadioButton("否", window)
    r_yes.move(300, 100)
    r_no.move(300, 150)
    answer_group = QButtonGroup(window)
    answer_group.addButton(r_yes)
    answer_group.addButton(r_no)
    #*******QButtonGroup 测试*******结束
    
    window.show()
    sys.exit(app.exec_())
    
    
    
  3. 结果
    在这里插入图片描述


总结

使用 QButtonGroup 对 QRadioButton 进行互斥分组是推荐的方案,QButtonGroup 还具备多种扩展的api功能,后续会更新。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值