【pyqt】(十一)单选框
控件-单选框
单选框的类名为QRadioBox,在学习新的控件的时候, 需要掌握的内容主要除了属性之外,其信号触发方法也非常重要。还可以利用Designer来辅助我们进行学习,尤其是利用Designer的属性展示和设置。
单选框中,最重要的两个属性为checkable
和checked
,checkable
用来指定这个单选框是否可以被选择,checked
表示该单选框目前被选中的状态,我们也可以在最开始设计的时候将某个单选框的checked属性设置为true,这样表示默认选择这一项。其信号传递可以直接使用clicked
方法,这样和普通的按钮一样的方法显得更加统一
如果有多项需要使用多选框的情况,需要使用group将其分隔开来才能正常使用
【代码示例】设计两个按钮组,然后利用一个标签信号和槽函数来输出这些按钮组中选择的内容
from PySide6.QtWidgets import QApplication, QWidget, QButtonGroup, QLabel, QRadioButton, QHBoxLayout, QVBoxLayout
class MyWindow(QWidget):
def __init__(self):
super().__init__()
# 按钮组1
self.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)
# 按钮组2
self.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 而不是 addWidget
mainlayout.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()
运行结果: