Python常用基础语法知识点大全(python中基本语法)
582
2022-08-22
QButtonGroup管理状态按钮(qbuttongroup 全不选)
参考文档:id)函数为容器中的按钮关联一个整数,通过id(btn)获取关联的id.checkButton()或以获取被选中的按钮(只能返回一个,所以只能用于exclusive == True的情况),checkedId获得选中按钮的id.buttons函数可以返回容器器中的按钮。
QButtonGroup一般用于管理以下三种按钮:
QPushButton它的属性checkable == Ture时,即它的实例调用了setCheckable(True)函数QRadioButtonQCheckBox
独占示例
from PySide6.QtWidgets import QApplication,\ QWidget, QVBoxLayout, QHBoxLayout,\ QRadioButton, QLabel, QButtonGroup, \ QPushButtonclass Window(QWidget): def __init__(self): super().__init__() self.__set_up_ui() def __set_up_ui(self): v_box = QVBoxLayout(self) v_box.addWidget(QLabel("你的职业是:")) h_box = QHBoxLayout() v_box.addLayout(h_box) lst = [ QRadioButton("程序员"), QRadioButton("程序媛"), QRadioButton("程序猿"), ] qbg = QButtonGroup(self) self.qgb = qbg _id = 1 for qrb in lst: h_box.addWidget(qrb) qbg.addButton(qrb, _id) _id += 1 btn = QPushButton("获取职业") btn.clicked.connect(lambda: print(self.qgb.checkedId())) v_box.addWidget(btn)app = QApplication([])w = Window()w.show()app.exec()
非独占式
调用以下函数,使其成为非独占式。
qbg.setExclusive(False)
相应的QRadioButton改为:
lst = [ QCheckBox("程序员"), QCheckBox("程序媛"), QCheckBox("程序猿"),]
为了能获取选中的项,我们需要遍历buttons()判断按钮状态
class CheckBoxGroup(QButtonGroup): def checkedId(self) -> list[int]: lst = [] for btn in self.buttons(): if btn.isChecked(): lst.append(self.id(btn)) return lst
CheckBoxGroup重载了checkedId
完整代码如下:
from PySide6.QtWidgets import QApplication, QWidget, \ QVBoxLayout, QHBoxLayout, QLabel, QButtonGroup, \ QPushButton, QCheckBoxclass CheckBoxGroup(QButtonGroup): def checkedId(self) -> list[int]: lst = [] for btn in self.buttons(): if btn.isChecked(): lst.append(self.id(btn)) return lstclass Window(QWidget): def __init__(self): super().__init__() self.__set_up_ui() def __set_up_ui(self): v_box = QVBoxLayout(self) v_box.addWidget(QLabel("你的职业是:")) h_box = QHBoxLayout() v_box.addLayout(h_box) lst = [ QCheckBox("程序员"), QCheckBox("程序媛"), QCheckBox("程序猿"), ] qbg = CheckBoxGroup(self) qbg.setExclusive(False) self.qgb = qbg _id = 1 for qrb in lst: h_box.addWidget(qrb) qbg.addButton(qrb, _id) _id += 1 btn = QPushButton("获取职业") btn.clicked.connect(lambda: print(self.qgb.checkedId())) v_box.addWidget(btn)app = QApplication([])w = Window()w.show()app.exec()
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~