今天再来介绍一个GUI中比较常用的一个控件,单选按钮QRadioButton,顾名思义,单选按钮就是只能选一个,不能多选;就像是考试的单项选择题一样,只能选一个答案。from PySide6.QtWidgets import QWidget, QApplication, QPushButton, QGridLayout, QLabel, QRadioButton
class Btn(QWidget): def __init__(self): super().__init__() # 设置窗口标题 self.setWindowTitle("单选按钮") # 设置窗口尺寸 self.resize(300, 300) # 设置控件样式(暂时跳过,后面再聊这部分内容) self.setStyleSheet(""" QWidget { background-color: powderblue; font-size: 20px; } """) # 创建网格布局 self.main_layout = QGridLayout() # 设置网格布局为主布局 self.setLayout(self.main_layout) # 设置布局的水平和垂直间隔距离为20 self.main_layout.setSpacing(20) # 设置(左、上、右、下)内容边距 self.main_layout.setContentsMargins(20, 20, 10, 10) # 初始化实例方法setup_01 self.setup_01()
三、创建实例方法setup_01,在实例方法中创建所需要的控件def setup_01(self): # 创建题目标签 self.label_1 = QLabel("中华人民共和国成立日期是:", self) # 创建四个单选按钮 self.radio_01 = QRadioButton("A: 1950年5月1日", self) self.radio_02 = QRadioButton("B: 1950年7月1日", self) self.radio_03 = QRadioButton("C: 1949年5月1日", self) self.radio_04 = QRadioButton("D: 1949年10月1日", self) # 创建提交答案按钮 self.btn = QPushButton("确认提交", self) # 为按钮连接槽函数 self.btn.clicked.connect(self.show_result) # 创建结果展示标签 self.label_2 = QLabel() # 把上面标签添加到布局中 self.main_layout.addWidget(self.label_1, 0, 0) self.main_layout.addWidget(self.radio_01, 1, 0) self.main_layout.addWidget(self.radio_02, 2, 0) self.main_layout.addWidget(self.radio_03, 3, 0) self.main_layout.addWidget(self.radio_04, 4, 0) self.main_layout.addWidget(self.btn, 5, 0) self.main_layout.addWidget(self.label_2, 6, 0)
def show_result(self): # 先判断,有没有选择答案 if not(self.radio_01.isChecked() or self.radio_02.isChecked() or self.radio_03.isChecked() or self.radio_04.isChecked()): self.label_2.setText("请先选择答案!") # 如果选择了正确选项 elif self.radio_04.isChecked(): self.label_2.setText("恭喜你答对了!") self.label_2.setStyleSheet("color: red;") # 未选择正确选项 else: self.label_2.setText("蠢货,这都能答错!") self.label_2.setStyleSheet("color: green;")
单元按钮默认是互斥的,不能同时选择多个,当然如果把他的自动互斥关闭,就可以当多选按钮来用了,一般不建议这样用,因为单选按钮设计之初就是当单选来用的;因为GUI里面有专门的多选按钮,没必要通过这种方式来实现多选。 比如上面创建完按钮后,把自动互斥 setAutoExclusive(False)设置成False就可以了,默认是True。# 创建题目标签self.label_1 = QLabel("中华人民共和国成立日期是:", self)# 创建二个单选按钮self.radio_01 = QRadioButton("A: 1950年5月1日", self)self.radio_02 = QRadioButton("B: 1950年7月1日", self)self.radio_03 = QRadioButton("C: 1949年5月1日", self)self.radio_04 = QRadioButton("D: 1949年10月1日", self)# 把自动独享(互斥)设置为False__________self.radio_01.setAutoExclusive(False)self.radio_02.setAutoExclusive(False)self.radio_03.setAutoExclusive(False)self.radio_04.setAutoExclusive(False)
Python中的常用控件也没有多少,也没有太多要写的东西,编程最终的目的还是面向工作、面向实际问题更有意思,大家如果工作中有什么问题需要用编程来解决的,欢迎留言,大家试着用编程来实实在在的解决生活和工作中的重复劳动。