繼承 QObject
提供 一個抽象的按鈕容器, 可以將多個按鈕划分為一組,不具備可視化的效果,一般放的都是可以被檢查的按鈕
import sys from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton,QButtonGroup class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.resize(300,300) self.rb1=QRadioButton('男',self) self.rb2 = QRadioButton('女', self) self.rb3 = QRadioButton('是', self) self.rb4 = QRadioButton('否', self) self.rb = QRadioButton('人妖', self) self.rb1.move(50,50) self.rb2.move(50, 80) self.rb.move(50, 110) self.rb3.move(150, 50) self.rb4.move(150, 80) self.rb1.setChecked(True) zu1=QButtonGroup(self) #創建一個按鈕分組實例 zu2 = QButtonGroup(self) zu1.addButton(self.rb1,1) #給按鈕分組實例添加按鈕 #參數2 給按鈕設置一個id,不同分組的id可以重復 #如果id為-1,則將為該按鈕分配一個id。自動分配的ID保證為負數,從-2開始。 zu1.addButton(self.rb2,2) zu1.addButton(self.rb, 3) zu2.addButton(self.rb3) zu2.addButton(self.rb4) print(zu1.buttons()) #返回按鈕組中的所有按鈕 print(zu1.button(2)) #返回按鈕組中指定按鈕 print(zu1.checkedButton()) #返回按鈕組中被選中的按鈕 zu1.removeButton(self.rb) #從按鈕組中移除指定按鈕;不是刪除按鈕 zu2.setId(self.rb3,4) #給組中的按鈕設置id zu2.setId(self.rb4, 5) print(zu2.id(self.rb3)) #返回按鈕id #如果不存在此按鈕,則返回-1 print(zu1.checkedId()) #返回選中按鈕的id zu2.setExclusive(True) #獨占 ??? #zu2.buttonClicked.connect(self.A) #組中按鈕被點擊時發出信號 #會向槽函數傳遞被點擊的按鈕 #zu2.buttonClicked[int].connect(self.A) # 組中按鈕被點擊時發出信號 # [int]會向槽函數傳遞被點擊按鈕的id,而不是傳遞按鈕 zu2.buttonToggled.connect(self.B) #當按鈕組中的按鈕被切換狀態時, 發射此信號 #會向槽函數傳遞狀態發生改變的按鈕 def B(self,i): print('zu2切換了按鈕',i) def A(self,i): print('zu2被點擊了',i) if __name__ == '__main__': app = QApplication(sys.argv) demo = Demo() demo.show() sys.exit(app.exec_())
buttonPressed(int/QAbstractButton) 當按鈕組中的按鈕被按下時, 發射此信號
buttonReleased(int/QAbstractButton) 當按鈕組中的按鈕被釋放時, 發射此信號
天子驕龍