1. 单选按钮QRadioButton 和按钮组QButtonGroup
- 一个QRadioButton 是单选按钮,可以选中或取消。
- 将多个QRadioButton按钮添加到QButtonGroup中,就是一个单选选项组。事件由 QButtonGroup 进行管理。
1.1 单选按钮的创建
- parent:父容器
1 2 3 4 5 | from PySide2.QtWidgets import QRadioButton button = QRadioButton("选项名", parent) #或 button = QRadioButton( parent) button.setText("选项名") |
1.2 使用QButtonGroup将多个单选按钮组成单选组
- button单选按钮
- id:自定义数字编号
1 2 3 4 5 | from PySide2.QtWidgets import QRadioButton,QButtonGroup btg=QButtonGroup() btg.addButton(button,id) btg.addButton(button,id) btg.addButton(button,id) |
1.3 信号:选中状态改变事件
- buttongroup:按钮组
- handleButtonClicked:事件函数
1 | buttongroup.buttonClicked.connect(handleButtonClicked) |
1.4 方法:获取按钮的文本内容 和 在单选组中的id
1 2 3 4 5 | itemID=buttongroup.checkedButton()#获取选中的是第几个选项 itemText=buttongroup.checkedButton().text()#获取选项内容 butText=button.text()#获取该按钮的文本内容 butID=button.group().checkedButton()#获取自己所在选项组的id |
1.5 方法:获取单选按钮当前状态
1 | result=button.isChecked():#True(选中) False(没选中) |
1.6 方法:改变选中状态
1 2 | button.setCheckable(False)#取消选中 button.setCheckable(False)#选中 |
1.5 示例1
1.5.1 就一个单选按钮
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | from PySide2.QtWidgets import QApplication,QMainWindow,QRadioButton,QButtonGroup app=QApplication() #创建一个主窗口 window=QMainWindow() window.resize(500,400)#设置尺寸 window.move(300,310)#设置位置 window.setWindowTitle("QButtonGroup测试")#设置窗口标题 #第一个单选组 rbt1 = QRadioButton(window) rbt1.move(0, 0) rbt1.setText("选项0") #展示窗口 window.show() app.exec_() |
效果展示

1.6 示例2
两组单选组 互不冲突
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | from PySide2.QtWidgets import QApplication,QMainWindow,QRadioButton,QButtonGroup app=QApplication() #创建一个主窗口 window=QMainWindow() window.resize(500,400)#设置尺寸 window.move(300,310)#设置位置 window.setWindowTitle("QButtonGroup测试")#设置窗口标题 def butClicked(item): print("选中项的id为:",item.group().checkedId())#选中选在 选项组中的id。 print("选中项的名称为:%s\n"%item.text())#选中项的文本内容 #第一个单选组 rbt1 = QRadioButton(window) rbt1.move(0, 0) rbt1.setText("选项0") rbt2 = QRadioButton(window) rbt2.move(0, 20) rbt2.setText("选项1") rbt3 = QRadioButton(window) rbt3.move(0, 40) rbt3.setText("选项2") btg1=QButtonGroup()#创建一个按钮组 btg1.addButton(rbt1,0)#将单选按钮添加到按钮组,组成单选组。 btg1.addButton(rbt2,1) btg1.addButton(rbt3,2) btg1.buttonClicked.connect(butClicked)#添加事件 #第二个单选组 rbt4 = QRadioButton("选项3",window) rbt4.move(100, 0) rbt5 = QRadioButton("选项4",window) rbt5.move(100, 20) rbt6 = QRadioButton("选项5",window) rbt6.move(100, 40) btg2=QButtonGroup()#创建一个按钮组 btg2.addButton(rbt4,3))#将单选按钮添加到按钮组,组成单选组。 btg2.addButton(rbt5,4) btg2.addButton(rbt6,5) btg2.buttonClicked.connect(butClicked)#添加事件 #展示窗口 window.show() app.exec_() |
效果展示:
通过下方动图可以说明,左右两个单选组是独立的。
1.6 不使用按钮组QButtonGroup,添加多个单选按钮的效果。
即父组件下的所有单选按钮都变成了一组。
