'''
QButtonGroup 是 PySide6 中用于用于將多個(gè)按鈕分組,實(shí)現(xiàn)單選操作、統(tǒng)一管理,
并能為每個(gè)按鈕分配唯一標(biāo)識(shí)符以方便操作和獲取狀態(tài)。
常用方法和屬性:
addButton(button, id): 將按鈕添加到組中,并為其指定一個(gè)整數(shù)類型的標(biāo)識(shí)符。
button(id): 通過(guò)標(biāo)識(shí)符獲取組中的按鈕。
checkedButton(): 獲取當(dāng)前被選中的按鈕。
checkedId(): 獲取當(dāng)前被選中按鈕的標(biāo)識(shí)符。
buttons()查看組里的按鈕
setId(button,id) 給按鈕綁定id
id(button)查看按鈕的id
信號(hào):
buttonClicked(id): 當(dāng)組中的按鈕被點(diǎn)擊時(shí)發(fā)出,參數(shù)為被點(diǎn)擊按鈕的標(biāo)識(shí)符。
buttonPressed(id): 當(dāng)組中的按鈕被按下時(shí)發(fā)出。
buttonReleased(id): 當(dāng)組中的按鈕被釋放時(shí)發(fā)出。
'''
from tokenize import group
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from PySide6.QtGui import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.resize(400,400)
self.setWindowTitle("QButtonGroup按鈕組")
radio_boy = QRadioButton("男",self)
radio_gril = QRadioButton("女",self)
radio_boy.move(30,30)
radio_gril.move(30,60)
radio_boy.setChecked(True)
radio_yes = QRadioButton("yes",self)
radio_no = QRadioButton("no",self)
radio_yes.move(100,30)
radio_no.move(100,60)
group = QButtonGroup(self)
group2 = QButtonGroup(self)
# addButton(button,id)將按鈕添加到組中,并為其指定一個(gè)整數(shù)類型的標(biāo)識(shí)符。
group.addButton(radio_boy)
group.addButton(radio_gril)
group.setId(radio_boy,1)
group.setId(radio_gril,2)
group2.addButton(radio_yes,1)
group2.addButton(radio_no,2)
# button(id): 通過(guò)標(biāo)識(shí)符獲取組中的按鈕
# print(group.button(1).text())
# checkedButton(): 獲取當(dāng)前被選中的按鈕
# print(group.checkedButton().text())
# checkedId(): 獲取當(dāng)前被選中按鈕的標(biāo)識(shí)符
# print(group.checkedId())
# buttons() 查看組里的按鈕
# print(group2.buttons())
#查看按鈕ID
# print(group.id(radio_gril))
#信號(hào)
group.buttonClicked.connect(self.on_group_slot)
self.group = group
def on_group_slot(self):
id = self.group.checkedId()
print(id)
print(self.group.button(id).text())
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = Window()
win.show()
sys.exit(app.exec())
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。