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_())
查看組中被選中的按鈕:

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_())

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 是-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 了。
直接用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_())
總結:
以上就是按鈕組的介紹,它一般都是配合QRadioButton 和 QCheckBox 使用的!