pyqt5-011
QButtonGroup:
描述:
提供一个抽象的按钮容器,可以将多个按钮划分为一组
不具备可视化的效果
一般放的都是可以被检查的按钮
继承: QObject()
功能:
创建按钮组
添加按钮:
API:
addButton(QAbstractButton, id = -1):(如果id为-1,则将为该按钮分配一个id,自动分配的ID保证为负数,从-2开始;如果要分配自己的ID,请使用正值以避免冲突)
应用场景:想按钮中添加按钮,并选择设置ID
查看按钮:
API:
buttons() 查看所有按钮组中的按钮
button(ID) 根据ID获取对应按钮,没有则返回None
checkedButton() 获取选中的那个按钮
应用场景:
获取指定条件的按钮
移除按钮:
API:removeButton(QAbstractButton)
应用场景:
移除指定按钮
注意:(不是从界面上移除;是从抽象关系上移除)
绑定和获取ID:
API:
setId(QAbstractButton, int)
id(QAbstractButton):指定按钮对应的ID;如果不存在按钮,则返回-1
checked():选中的ID;如果没有选中按钮则返回-1
应用场景:设置ID,方便识别用户选项
应用场景:
独占设置:
API:
setExclusive(bool)
exclusive()
应用场景:统一设置按钮组中的按钮是否是独占(选择互斥)
信号:
buttonClicked(int/QAbstractButton):当按钮组中的按钮被点击时,发射信号
buttonPressed(int/QAbstractButton):当按钮组中的按钮按下式,发射信号
buttonReleased(int/QAbstractButton):当按钮组中的按钮被释放是,发射此信号
buttonToggled(QAbstractButton/int, bool):当按钮组中的按钮被切换状态时,发射此信号
重点注意:
如果一个对象向外界提供的信号名称一样,但参数不一样
外界在使用信号时,可以使用如下格式进行选择
signal_name[type]:
signal_name:信号名称
type:参数类型
from PyQt5.Qt import * import sys app = QApplication(sys.argv) window = QWidget() window.resize(500,500) window.setWindowTitle('QButtonGroup') # 男女 r_man = QRadioButton('男', window) r_female = QRadioButton('女', window) r_man.move(100, 100) r_female.move(100, 150) r_man.setChecked(True) sex_group = QButtonGroup(window) sex_group.addButton(r_man, 1) sex_group.addButton(r_female, id= 2) # 设置按钮id # 是否 r_yes = QRadioButton('是', window) r_no = QRadioButton('否', window) r_yes.move(300, 100) r_no.move(300, 150) jus_group = QButtonGroup(window) jus_group.addButton(r_yes) jus_group.addButton(r_no) jus_group.setId(r_yes, 3) jus_group.setId(r_no, 4) print(jus_group.id(r_yes)) print(jus_group.id(r_no)) r_no.setChecked(True) print(jus_group.checkedId()) # 值为-1是为未选中 # sex_group.removeButton(r_female) # 移除按钮,从关系上移除,界面上不会移除 # print(sex_group.buttons()) # print(sex_group.button(2)) # 通过id获取按钮 # print(sex_group.checkedButton()) # sex_group.setExclusive(True) # 互斥 # sex_group.setExclusive(False) # 不互斥 def text(val): # print(val) print(sex_group.id(val)) sex_group.buttonClicked.connect(text) # sex_group.buttonClicked[int].connect(text) window.show() sys.exit(app.exec_())