简单个人网站开发代码济南做网站比较好的公司
控件-单选框
单选框的类名为QRadioBox,在学习新的控件的时候, 需要掌握的内容主要除了属性之外,其信号触发方法也非常重要。还可以利用Designer来辅助我们进行学习,尤其是利用Designer的属性展示和设置。
单选框中,最重要的两个属性为checkable
和checked
,checkable
用来指定这个单选框是否可以被选择,checked
表示该单选框目前被选中的状态,我们也可以在最开始设计的时候将某个单选框的checked属性设置为true,这样表示默认选择这一项。其信号传递可以直接使用clicked
方法,这样和普通的按钮一样的方法显得更加统一
如果有多项需要使用多选框的情况,需要使用group将其分隔开来才能正常使用
【代码示例】设计两个按钮组,然后利用一个标签信号和槽函数来输出这些按钮组中选择的内容
from PySide6.QtWidgets import QApplication, QWidget, QButtonGroup, QLabel, QRadioButton, QHBoxLayout, QVBoxLayoutclass MyWindow(QWidget):def __init__(self):super().__init__()# 按钮组1self.group1 = QButtonGroup(self)label1 = QLabel("请选择编程语言")btn1 = QRadioButton("Python")btn2 = QRadioButton("Java")btn3 = QRadioButton("C++")self.group1.addButton(btn1, 1) # 第二个参数是ID,方便区分self.group1.addButton(btn2, 2)self.group1.addButton(btn3, 3)# 按钮组2self.group2 = QButtonGroup(self)label2 = QLabel("请选择时间")btn4 = QRadioButton("30 min")btn5 = QRadioButton("1 hour")btn6 = QRadioButton("2 hours")self.group2.addButton(btn4, 4)self.group2.addButton(btn5, 5)self.group2.addButton(btn6, 6)# 显示标签self.label_show = QLabel("请选择编程语言和时间")# 调整布局h1 = QHBoxLayout()h1.addWidget(label1)h1.addWidget(btn1)h1.addWidget(btn2)h1.addWidget(btn3)h2 = QHBoxLayout()h2.addWidget(label2)h2.addWidget(btn4)h2.addWidget(btn5)h2.addWidget(btn6)mainlayout = QVBoxLayout()mainlayout.addWidget(self.label_show)mainlayout.addLayout(h1) # 使用 addLayout 而不是 addWidgetmainlayout.addLayout(h2)self.setLayout(mainlayout)# 连接按钮组的点击信号到槽函数self.group1.buttonClicked.connect(self.change_text)self.group2.buttonClicked.connect(self.change_text)def change_text(self):language_btn = self.group1.checkedButton() # 返回按钮组1中选中的按钮time_btn = self.group2.checkedButton() # 返回按钮组2中选中的按钮if language_btn and time_btn:self.label_show.setText(f'你选择的编程语言是:{language_btn.text()}, 你选择写代码的时间是 {time_btn.text()}')if __name__ == '__main__':app = QApplication([])window = MyWindow()window.show()app.exec()
运行结果: