將單選按鈕和多選按鈕分組的類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_())
View Code

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

 

查看組中的按鈕:

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

如果添加按鈕的時候給設置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_())
View Code

 

移除按鈕:

它並不是從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_())
View Code

 

綁定和獲取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_())
View Code

 

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 使用的!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM