QButtonGroup管理状态按钮

参考文档:​​https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QButtonGroup.html​

QButtonGroup的作用

QButtonGroup管理状态按钮

从文件的详细描述中可以获得以下信息:

[En]

The following information can be obtained from the detailed description of the document:

  • 这是一个抽象的容器,当中可以放到一些​ ​按钮小部件​
  • 它只管理按钮的状态,不负责显示。
    [En]

    it only manages the status of the button and is not responsible for displaying it.*

  • 通过​ ​exclusive​​​属性可以设置,​ ​QButtonGroup​​​是否只能有一个按钮为选中状态,默认为​ ​True​
  • 可以通过​ ​setId(btn, id)​​​函数为容器中的按钮关联一个整数,通过​ ​id(btn)​​获取关联的id.

  • ​checkButton()​​​或以获取被选中的按钮(只能返回一个,所以只能用于​ ​exclusive == True​​​的情况),​ ​checkedId​​获得选中按钮的id.

  • ​buttons​​函数可以返回容器器中的按钮。

QButtonGroup一般用于管理以下三种按钮:

  • ​QPushButton​​​它的属性​ ​checkable == Ture​​​时,即它的实例调用了​ ​setCheckable(True)​​函数
  • ​QRadioButton​
  • ​QCheckBox​

独占示例

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()

非独占式

调用以下函数以使其成为非独占的。

[En]

Call the following function to make it non-exclusive.

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()

Original: https://blog.51cto.com/u_12072082/5574425
Author: luan_225
Title: QButtonGroup管理状态按钮

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500809/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Grafana监控大屏配置参数介绍(一)

    Grafana 系列文章,版本:OOS v9.3.1 Grafana 的介绍和安装 在上篇文章中,我们已经安装了Grafana,并且看到了它的初步面貌。在这篇文章,我们以一个简单的…

    Python 2023年9月28日
    0127
  • Jupyter NoteBook介绍,以及树莓派4b安装教程

    一、什么是Jupyter Notebook? Jupyter Notebook是基于控制台的方法扩展到交互式计算的新方向,提供了适用于捕获整个计算过程的基于Web的应用程序:开发,…

    Python 2023年8月8日
    099
  • 数据可视化报告

    文章目录 2.1 股票跌幅前10位股票的条形图 2.2 各年龄层中男性和女性参会人数累计柱状图 2.3 近四届全国人大代表的性别比例折线图 2.4 华夫饼图 2.5 矩形树图 im…

    Python 2023年8月22日
    085
  • python强化学习实例:寻路Q-Learn演示

    文章目录 python强化学习-寻路Q-Learn演示 1. 简介 * 1.1 项目简介 1.2 运行方式 1.3 参考 2 Q-Learn * 2.1 简介 2.2 项目里的Q表…

    Python 2023年9月18日
    0103
  • game connect4 java_为我的connect 4数学游戏创建一个积分系统

    我试着在每次用户得到正确答案时加一分,如果在我的”连接4″数学游戏中答错了,我就拿走一分。在游戏中,用户把一个计数器放在想要的地方,问题就会弹出,等待答案,…

    Python 2023年9月25日
    082
  • 【PyTorch】1.1认识Pytorch

    PyTorch是一个基于Numpy的科学计算包,向它的使用者提供了两大功能。 作为Numpy的代替这,向用户提供使用GPU强大功能的能力 作为一款深度学习的平台,向用户提供最大的灵…

    Python 2023年8月29日
    073
  • Django及钉钉实现第三方登录

    所有第三方登录都要先获取第三方应用的Id和秘钥开发之前,需要前往第三方登录的开发者平台QQ、新浪微博、Github,注册账号并填写信息申请接入,成功后会给你一个ID和秘钥,以后你就…

    Python 2023年8月6日
    0152
  • WSGI规范

    WSGI是一种服务器和应用交流的接口规范。如果一个应用服从于WSGI规范,那么它将能够运行于任何服从WSGI规范的服务器上。WSGI应用可以堆叠,那些处于栈中间位置的称作中间件(m…

    Python 2023年6月12日
    095
  • 下班后我都学了什么 | Python 如何高效的遍历DataFrame?

    小小数据分析师~ 给自己充充电🔋,然后把笔记整理在博客~~ ❤️ 如果我的总结对你有帮助,请点赞👍支持哦,谢谢!!欢迎留言交流~~ 一起进步 💦 ❤️ 「更多文章」下班后我都学了什…

    Python 2023年8月20日
    0104
  • 视频中转服务源码 原创

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Python 2023年5月23日
    0129
  • selenium+pytest+allure用例失败自动截图

    最近做webUI自动化时,希望用例执行失败的时候,可以自动截图,以便于判断失败原因 pytest 有个很好的钩子函数 pytest_runtest_makereport 可以获取到…

    Python 2023年9月10日
    0113
  • pandas+datafram

    Pandas的dataframe基本操作方法总结 一.DataFram的基本结构: import pandas as pd import numpy as np df = pd.D…

    Python 2023年8月8日
    0105
  • 强大的数据分析工具——Pandas操作、易错点、知识点三万字详解

    一、 Pandas数据结构 1.Series2.DataFrame3.从DataFrame中查询出Series DataFrame: 二维数据、整个表格、多行多列 Series:一…

    Python 2023年8月9日
    097
  • Python中的路径

    windows路径使用的是\,linux路径使用的是/。 特别的,在windows系统中如果有这样的一个路径 D:\nxxx\txxx\x1,程序会报错。因为在路径中存在特殊符 \…

    Python 2023年6月3日
    095
  • python笔记

    解释器 计算机只能理解机器语言。把其他语言翻译成为机器语言的工具,被称为编译器。编译器翻译的方式有两种:一个是编译,另一个是解释。执行python程序的三种方式:解释器&#8211…

    Python 2023年9月25日
    061
  • Python数据分析入门(十九):绘制散点图

    散点图 散点图也叫 X-Y 图,它将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定。 通过观察散点图上数据点的分布情况,我们可以推断…

    Python 2023年9月3日
    0113
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球