QButtonGroup抽象按钮组
QButtonGroup(parent) # 创建按钮组的同时设置父控件
addButton(QAbstractButton, id = -1) # 添加按钮到按钮组
# 如果id为-1,则将为该按钮分配一个id。自动分配的ID保证为负数,从-2开始。
# 如果要分配自己的ID,请使用正值以避免冲突
buttons() # 获取抽象按钮组中所有的按钮对象,返回列表
button(ID) # 根据ID获取对应按钮, 没有则返回None
checkedButton() # 获取选中的那个按钮
removeButton(QAbstractButton) # 从抽象组移除指定按钮
# 不是从界面上移除,是从抽象关系上移除
setId(QAbstractButton,int) # 给按钮设置(绑定)ID
id(QAbstractButton) # 获取指定按钮对应的ID,如果不存在此按钮,则返回-1
checkedId() # 获取选中按钮的ID,如果没有选中按钮则返回-1
# 应用场景:设置ID, 方便识别用户选项
setExclusive(bool) # 统一设置按钮组中的按钮是否是独占(选择互斥)
exclusive() # 获取按钮组是否独占
buttonClicked(int/QAbstractButton) # 当按钮组中的按钮被点击时, 发射此信号。传递 按钮对象或者Id
buttonPressed(int/QAbstractButton) # 当按钮组中的按钮被按下时, 发射此信号。传递 按钮对象或者Id
buttonReleased(int/QAbstractButton) # 当按钮组中的按钮被释放时, 发射此信号。传递 按钮对象或者Id
buttonToggled(QAbstractButton, bool) # 当按钮组中的按钮被切换状态时, 发射此信号。传递按钮对象和选中状态
# ①先监听切换前的按钮id,是否被选中(bool),
# ②后监听切换后的按钮id,是否被选中(bool),
# 触发信号,会向外传递 按钮对象或者Id,默认是传递 按钮对象
# 如果一个对象向外界提供的信号名称一样, 但参数不一样,外界在使用信号时, 可以使用如下格式进行选择
signal_name[type]
# signal_name:信号名称
# type:参数类型
# # 默认方式,传递被点击的按钮对象
# group_sex.buttonClicked.connect(lambda b:print(b.text(), b))
# # 传递id方式
# group_option.buttonPressed[int].connect(lambda i: print(i, group_option.button(i)))
# buttonToggled 信号不能传递id
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.resize(500, 500)
window.setWindowTitle('QButtonGroup-创建和使用')
# 创建单选按钮
rbtn_male = QRadioButton("男", window)
rbtn_female = QRadioButton("女", window)
rbtn_yes = QRadioButton("Yes", window)
rbtn_no = QRadioButton("No", window)
# 单选按钮移动到指定位置
rbtn_male.move(100, 100)
rbtn_female.move(200, 100)
rbtn_yes.move(100, 150)
rbtn_no.move(200, 150)
# 创建抽象按钮组
group_sex = QButtonGroup(window)
group_option = QButtonGroup(window)
# 将单选按钮分别添加到抽象按钮组
group_sex.addButton(rbtn_male,1)
group_sex.addButton(rbtn_female,2)
group_option.addButton(rbtn_yes,1)
group_option.addButton(rbtn_no)
rbtn_female.setChecked(True)
rbtn_yes.setChecked(True)
# # 获取抽象按钮组中所有的按钮对象,返回列表
# ls = group_sex.buttons()
#
# for b in ls:
# print(b.text())
#
# # 根据ID获取抽象按钮组中的按钮对象
# print(group_option.button(2))
# # 获取按钮组中选中的按钮对象
# print(group_sex.checkedButton())
#
# # 获取按钮组中选中的按钮ID
# print(group_sex.checkedId())
#
# # 移除抽象按钮组中指定按钮
# group_sex.removeButton(rbtn_male)
#
# print('抽象按钮组移除按钮之后')
# for b in group_sex.buttons():
# print(b.text())
# 给抽象按钮组中的按钮添加id
group_option.setId(rbtn_yes, 10)
group_option.setId(rbtn_no, 11)
# 获取按钮组中指定按钮的id
print(group_option.id(rbtn_yes))
print(group_option.id(rbtn_no))
# 获取按钮组中被选中按钮的id
print(group_option.checkedId())
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.resize(500, 500)
window.setWindowTitle('QButtonGroup-可用信号')
# 创建单选按钮
rbtn_male = QRadioButton("男", window)
rbtn_female = QRadioButton("女", window)
rbtn_yes = QRadioButton("Yes", window)
rbtn_no = QRadioButton("No", window)
# 单选按钮移动到指定位置
rbtn_male.move(100, 100)
rbtn_female.move(200, 100)
rbtn_yes.move(100, 150)
rbtn_no.move(200, 150)
# 创建抽象按钮组
group_sex = QButtonGroup(window)
group_option = QButtonGroup(window)
# 将单选按钮分别添加到抽象按钮组
group_sex.addButton(rbtn_male, 1)
group_sex.addButton(rbtn_female, 2)
rbtn_male.setChecked(True)
group_option.addButton(rbtn_yes, 1)
group_option.addButton(rbtn_no, 2)
rbtn_yes.setChecked(True)
# 可用信号
# buttonClicked(int / QAbstractButton) # 当按钮组中的按钮被点击时, 发射此信号
# buttonPressed(int / QAbstractButton) # 当按钮组中的按钮被按下时, 发射此信号
# buttonReleased(int / QAbstractButton) # 当按钮组中的按钮被释放时, 发射此信号
# buttonToggled(int / QAbstractButton, bool) # 当按钮组中的按钮被切换状态时, 发射此信号
# # 默认方式,传递被点击的按钮对象
# group_sex.buttonClicked.connect(lambda b:print(b.text(), b))
# # 传递id方式
# group_option.buttonPressed[int].connect(lambda i: print(i, group_option.button(i)))
def cao(a, b):
print(a, b)
group_option.buttonToggled.connect(cao)
# ----①buttonToggled先监听切换前的按钮id,是否被选中(bool)
# ----②buttonToggled后监听切换后的按钮id,是否被选中(bool)
window.show()
sys.exit(app.exec_())