上节聊了聊单选按钮QRadioButton,本节来聊聊多选按钮QCheckBox,多选按钮就是一次能选多个选项,就像是考试的多项选择题一样,可以选择多个答案。from PySide6.QtWidgets import QWidget, QApplication, QPushButton, QGridLayout, QLabel, QCheckBox
class Btn(QWidget): def __init__(self): super().__init__() # 设置窗口标题 self.setWindowTitle("多选按钮") # 设置窗口尺寸 self.resize(300, 300) # 设置控件样式(暂时跳过,后面再聊这部分内容) self.setStyleSheet(""" QWidget { background-color: lightblue; 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.checkbox_01 = QCheckBox(" Python", self) self.checkbox_02 = QCheckBox(" Java", self) self.checkbox_03 = QCheckBox(" C语言", self) self.checkbox_04 = QCheckBox(" C++", 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.checkbox_01.isChecked() or self.checkbox_02.isChecked() or self.checkbox_03.isChecked() or self.checkbox_04.isChecked()): self.label_2.setText("请还没有选择答案!") elif self.checkbox_01.isChecked() and self.checkbox_03.isChecked() \ and self.checkbox_04.isChecked() and not self.checkbox_02.isChecked(): self.label_2.setText("恭喜你答对了!") self.label_2.setStyleSheet("color: red;") else: self.label_2.setText("很遗憾,你答错了!") self.label_2.setStyleSheet("color: green;")
if __name__ == "__main__": import sys app = QApplication(sys.argv) win = Btn() # 用创建的类 Win实例化一个对象,赋值给 win win.show() # 显示 实例化的 win 窗口 sys.exit(app.exec()) # 运行程序
大家工作中有什么重复性的劳动,可以留言,在能力范围内的,在能力范围之内的,我试着用编程帮来你解决,可以专门拿出来大家聊聊,大家一起用编程来解决问题生活中的问题;如果能解决更好,不能解决大家也一起交流,学习;欢迎大家踊跃留言。