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_())
原文地址:https://www.cnblogs.com/smartisn/p/13022499.html