python - PyQt6中QStyle.StandardPixmap是如何定义的

标签 python enums pyqt pyqt6

PyQt6 中 QStyle.StandardPixmap 的枚举是如何定义的?我尝试复制它,如下所示:

from enum import Enum

class bootlegPixmap(Enum):
    SP_TitleBarMenuButton = 0
    SP_TitleBarMinButton = 1
    SP_TitleBarMaxButton = 2

for y in bootlegPixmap:
    print(y)

我得到以下输出:

bootlegPixmap.SP_TitleBarMenuButton
bootlegPixmap.SP_TitleBarMinButton
bootlegPixmap.SP_TitleBarMaxButton

如果我尝试使用以下代码迭代原始代码:

from PyQt6.QtWidgets import QStyle
for x in QStyle.StandardPixmap:
    print(x)

我只得到数值:

0
1
2
...

最佳答案

这与 PyQt 本身无关。这只是Python enum classes 的正常行为.

默认情况下,IntEnum/IntFlag 的成员打印其数字值;因此,如果您想要更多信息输出,您应该使用 repr 代替:

>>> import enum
>>>
>>> class X(enum.IntEnum): A = 1
...
>>> f'{X.A} - {X.A!r}'
1 - <X.A: 1>

相比之下,Enum 的成员具有不透明值,因此它们默认为值的文本表示形式:

>>> class Y(enum.Enum): A = 1
...
>>> f'{Y.A} - {Y.A!r}'
Y.A - <Y.A: 1>

不用说,PyQt 总是使用整数类,因为这最接近它们在 Qt 中的定义方式:

>>> from PyQt6.QtWidgets import QStyle
>>>
>>> QStyle.StandardPixmap.mro()
[<enum 'StandardPixmap'>, <enum 'IntEnum'>, <class 'int'>, <enum 'ReprEnum'>, <enum 'Enum'>, <class 'object'>]
>>>
>>> f'{QStyle.StandardPixmap.SP_ArrowUp} - {QStyle.StandardPixmap.SP_ArrowUp!r}'
>>> '50 - <StandardPixmap.SP_ArrowUp: 50>'

关于python - PyQt6中QStyle.StandardPixmap是如何定义的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77306748/

相关文章:

Java JPA "Error compiling the query"当它使用枚举时

struct - 如何在结构之前的一个文档 block 中记录 Rust 结构/枚举?

用于日志记录的 Java 枚举

python - PySide(或 PyQt)信号和槽基础知识

python - PyQt 对话框在线程运行时不负责

python - 在 2 个 Python 进程之间共享数据结构

python - python中动态模块的init函数是什么?

python - PyQt 从不同目录导入 QML 主题

python - 如何在boto3中获取所有可用的弹性IP地址

python - 将 spaCy 模型与 AllenNLP Interpret 或 Textattack 结合使用