将单选按钮和多选按钮分组的类QButtonGroup
QButtonGroup 的继承图:
QButtonGroup 的描述:
它是个抽象的按钮容器,可以将多个按钮划分为一组
之所以抽象是指它不具备可视化的效果(因为它继承自QObject ,一般继承自QWidget的才具有可视化效果)。
它一般放的是可被检查的按钮:例如单选按钮,多选按钮,
QButtonGroup 的继承:
它继承自QObjecct 类
QButtonGroup 的功能:
添加按钮:
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") ########################################################### sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) ########################################################### radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())
id的用途:
添加按钮的时候设置id 是方便了后面对用户所做选择进行判断,进行分析处理。
它的默认值是-1
这里要注意,-1只是个标识,系统会为每个按钮自动分配id ,并不是所有的按钮的id 都是-1
所谓自动分配是从-2开始,-2,-3,-4,,,,
我们这里给男设置 1 女设置2
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1,1) sex_group.addButton(radio_button_2,2) #########################添加按钮的时候给它设置id################################## radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())
查看组中的按钮:
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") ########################################################### sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) ########################################################### radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #****************************查看组中的按钮******************************* print(sex_group.buttons()) print(judge_group.buttons()) #****************************查看组中的按钮******************************* #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())
如果添加按钮的时候给设置id 的话,那么,我们在查看按钮的时候可以根据id 来查看,
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1,1) sex_group.addButton(radio_button_2,2) #########################添加按钮的时候给它设置id################################## radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #****************************查看id为 1 的按钮******************************* print(sex_group.button(1)) #****************************查看id为 1 的按钮******************************* #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())在按钮组中,查看id 为1的按钮
查看组中被选中的按钮:
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1,1) sex_group.addButton(radio_button_2,2) #########################添加按钮的时候给它设置id################################## radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #****************************查看组中被选中的按钮******************************* print(sex_group.checkedButton()) #****************************查看组中被选中的按钮******************************* #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())
移除按钮:
它并不是从window 上删除这个按钮,而只是将其移出抽象的按钮组。
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1,1) sex_group.addButton(radio_button_2,2) #########################添加按钮的时候给它设置id################################## #****************************移出按钮组******************************* sex_group.removeButton(radio_button_2) #****************************移出按钮组******************************* radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())
绑定和获取ID:
前面的添加按钮到按钮组的时候可以绑定id ,如果忘了传了,
也可以用方法来设置。
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) #########################添加按钮的时候给它设置id################################## #****************************绑定id ******************************* sex_group.setId(radio_button_1,1) sex_group.setId(radio_button_2,2) #****************************绑定id ******************************* #****************************获取id ******************************* print(sex_group.id(radio_button_1)) print(sex_group.id(radio_button_2)) #****************************获取id ******************************* radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())绑定和获取组中按钮的id
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) #########################添加按钮的时候给它设置id################################## #****************************绑定id ******************************* sex_group.setId(radio_button_1,1) sex_group.setId(radio_button_2,2) #****************************绑定id ******************************* #****************************获取id ******************************* print(sex_group.id(radio_button_1)) print(sex_group.id(radio_button_2)) #****************************获取id ******************************* #****************************查看当前选中的按钮的id******************************* print(sex_group.checkedId()) #****************************查看当前选中的按钮的id******************************* radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())查看当前组中选中的按钮的id
如果都没有选中的话,id 是-1
独占设置:
可以将组中的独占设置为否!
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) #########################添加按钮的时候给它设置id################################## #****************************将一个组的独占设置为否定******************************* sex_group.setExclusive(False) #****************************将一个组的独占设置为否定******************************* radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())
QButtonGroup 的信号:
它会传递两种类型的值,一个是具体哪个按钮,一个是它的id
发出信号时向外传出的int 指的是之前设置的id .
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) #########################添加按钮的时候给它设置id################################## #****************************信号 向外传出的是具体的按钮******************************* sex_group.buttonClicked.connect(lambda val:print(val)) #****************************信号 向外传出的是具体的按钮******************************* radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())传出的是按钮
对于这种信号名字相同,参数类型不同,我们可以用以下方式进行信号选择:
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) #########################添加按钮的时候给它设置id################################## #****************************信号 向外传出的是按钮的id ******************************* sex_group.buttonClicked[int].connect(lambda val:print(val)) #****************************信号 向外传出的是按钮的id ****************************** radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())传出的是按钮的id
当然,获取了具体的按钮之后,自然很简单就可以获得它的id 了。
直接用sex_group.id() 就可以:
from PyQt5.Qt import * #刚开始学习可以这样一下导入 import sys #1,创建app app = QApplication(sys.argv) #2,控件的操作: #创建控件 window = QWidget() #设置控件 window.setWindowTitle("QRadioButton") window.resize(500,500) radio_button_1 = QRadioButton("男-Male",window) radio_button_1.move(100,100) radio_button_1.setIcon(QIcon("icon.ico")) radio_button_1.setShortcut("Ctrl+M") radio_button_2 = QRadioButton("女-Famale",window) radio_button_2.move(100,200) radio_button_2.setIcon(QIcon("icon.ico")) radio_button_2.setShortcut("Ctrl+F") radio_button_1.setChecked(True) #########################添加按钮的时候给它设置id################################## sex_group = QButtonGroup(window) sex_group.addButton(radio_button_1) sex_group.addButton(radio_button_2) #########################添加按钮的时候给它设置id################################## #****************************信号 向外传出的是按钮的id ******************************* sex_group.buttonClicked.connect(lambda val:print(val,sex_group.id(val))) #****************************信号 向外传出的是按钮的id ****************************** radio_button_yes = QRadioButton("yes",window) radio_button_yes.move(300,100) radio_button_no = QRadioButton("yes",window) radio_button_no.move(300,200) ########################################################### judge_group = QButtonGroup(window) judge_group.addButton(radio_button_yes) judge_group.addButton(radio_button_no) ########################################################### #展示控件 window.show() #3,进入消息循环 sys.exit(app.exec_())既获得按钮,又获得id ,(获得按钮其实就可以获得id )
总结:
以上就是按钮组的介绍,它一般都是配合QRadioButton 和 QCheckBox 使用的!