PQYT5 互斥单选框,代码直接复制可用
代码:
1 from PyQt5.QtWidgets import QWidget, QRadioButton, QApplication, QPushButton, QMessageBox, QButtonGroup 2 import sys 3 4 class Example(QWidget): 5 def __init__(self): 6 super().__init__() 7 self.initUI() 8 9 def initUI(self): 10 11 self.rb11 = QRadioButton('你是',self) 12 self.rb12 = QRadioButton('我是',self) 13 self.rb13 = QRadioButton('他是',self) 14 self.rb21 = QRadioButton('大美女',self) 15 self.rb22 = QRadioButton('大帅哥',self) 16 self.rb23 = QRadioButton('小屁孩',self) 17 18 bt1 = QPushButton('提交',self) 19 20 self.resize(320,180) 21 self.setWindowTitle('早点毕业吧--单选按钮') 22 """ 23 新建6个单选按钮。如果不增加分组,这个6个单选按钮是互斥的,因为单选按钮默认为autoExclusive(自动互斥)。 24 """ 25 self.rb11.move(20,20) 26 self.rb12.move(20,50) 27 self.rb13.move(20,80) 28 self.rb21.move(90,20) 29 self.rb22.move(90,50) 30 self.rb23.move(90,80) 31 32 bt1.move(20,120) 33 """ 34 将单选按钮添加到分组中,同时分配一个id号 35 """ 36 self.bg1 = QButtonGroup(self) 37 self.bg1.addButton(self.rb11, 11) 38 self.bg1.addButton(self.rb12, 12) 39 self.bg1.addButton(self.rb13, 13) 40 41 self.bg2 = QButtonGroup(self) 42 self.bg2.addButton(self.rb21, 21) 43 self.bg2.addButton(self.rb22, 22) 44 self.bg2.addButton(self.rb23, 23) 45 46 self.info1 = '' 47 self.info2 = '' 48 """ 49 当我们在分组中点击给定按钮的时候会发出buttonClicked()信号,同时我们连接到rbclicked这个槽函数上。 50 """ 51 self.bg1.buttonClicked.connect(self.rbclicked) 52 self.bg2.buttonClicked.connect(self.rbclicked) 53 bt1.clicked.connect(self.submit) 54 55 self.show() 56 """ 57 这个就是当我们点击提交按钮的时候,根据self.info1和self.info2的值弹出相应的消息了。 58 """ 59 def submit(self): 60 if self.info1 == '' or self.info2 == '': 61 QMessageBox.information(self,'What?','貌似有没有选的啊,快去选一个吧!') 62 else: 63 QMessageBox.information(self,'What?',self.info1+self.info2) 64 """ 65 我们判断到底是点了哪个分组,怎么判断?使用self.sender()函数将信号的产生对象送过来。然后根据checkedId()去获得这个按钮的id号,通过id号的判断我们到底是点了哪个单选按钮。 66 """ 67 def rbclicked(self): 68 sender = self.sender() 69 if sender == self.bg1: 70 if self.bg1.checkedId() == 11: 71 self.info1 = '你是' 72 elif self.bg1.checkedId() == 12: 73 self.info1 = '我是' 74 elif self.bg1.checkedId() == 13: 75 self.info1 = '他是' 76 else: 77 self.info1 = '' 78 else: 79 if self.bg2.checkedId() == 21: 80 self.info2 = '大美女' 81 elif self.bg2.checkedId() == 22: 82 self.info2 = '大帅哥' 83 elif self.bg2.checkedId() == 23: 84 self.info2 = '小屁孩' 85 else: 86 self.info2 = '' 87 88 if __name__ == '__main__': 89 app = QApplication(sys.argv) 90 ex = Example() 91 sys.exit(app.exec_())