二,控件学习--9.QWidget~QAbstractButton~QButtonGroup(抽象的按钮组,解决多组互斥代码复杂问题)

学习计划

在这里插入图片描述

可用信号

在这里插入图片描述

功能作用

1.创建按钮组

在这里插入图片描述

2.添加按钮

在这里插入图片描述

3.查看按钮

在这里插入图片描述

4.移除按钮

在这里插入图片描述

5.绑定和获取ID

在这里插入图片描述

6.排他性设置

在这里插入图片描述

7.代码总览

# 0. 导入需要的包和模块
from PyQt5.Qt import *
import sys


# 1. 创建一个应用程序对象
app = QApplication(sys.argv)

# 2. 控件的操作
# 2.1 创建控件
window = QWidget()
# 2.2 设置控件
window.setWindowTitle("按钮组的使用")
window.resize(500, 500)


# 男女按钮组****************
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)
#绑定按钮ID方法一:
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)
#绑定按钮ID方法二:
answer_group.setId(r_yes, 1)
answer_group.setId(r_no, 2)

#打印单选框id
print("男的id:",sex_group.id(r_male))
print("女的id:",sex_group.id(r_female))
print("yes的id:",answer_group.id(r_yes))
print("no的id:",answer_group.id(r_no))

#选中否,并打印是否按钮组中被选中的按钮id
r_no.setChecked(True)
print("是否按钮组中被选中的按钮为:",answer_group.checkedId())

#设置是否按钮组中,去除单选的排他性
# sex_group.setExclusive(False)

#逻辑删除单选按钮,从按钮组中移除,在界面上还存在
# sex_group.removeButton(r_female)

#查看组中所有按钮
print("性别组中所有的按钮为:",sex_group.buttons())
#查看组中对应ID的按钮
print("性别组中id为2的按钮为:",sex_group.button(2))
#查看组中被选中的按钮
print("性别组中被选中的按钮为:",sex_group.checkedButton())


def test(val):
    print(val)
    #对应**1,将传输进来的单选按钮对象转化为其组内id
    print(sex_group.id(val))

#传输单选按钮对象到槽函数内**1
sex_group.buttonClicked.connect(test)
#传输按钮组内id到槽函数内**2
# sex_group.buttonClicked[int].connect(test)


# 2.3 展示控件
window.show()
# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值