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/