[PyQt] Getting parent class for an enum
Kyle Altendorf
sda at fstab.net
Thu May 17 14:11:59 BST 2018
On 2018-05-17 04:55, Phil Thompson wrote:
> On 17 May 2018, at 9:38 am, Florian Bruhin <me at the-compiler.org> wrote:
>>
>> On Thu, May 17, 2018 at 09:23:56AM +0100, Phil Thompson wrote:
>>> On 16 May 2018, at 1:57 pm, Denis Rouzaud <denis.rouzaud at gmail.com>
>>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> In the case of an enum (with Q_ENUM macro), it would be interesting
>>>> to have a way to get the parent class to be able to get the meta
>>>> enum from the enum value (enumValue):
>>>>
>>>> base = type(enumValue).parentClass()
>>>> idx =
>>>> base.staticMetaObject.indexOfEnumerator(type(enumValue).__name__)
>>>> metaenum = base.staticMetaObject.enumerator(idx)
>>>>
>>>> Would it be possible to add this capability to sip.enumType ?
>>>> Either to return the parent class or directly the metaEnum?
>>>
>>> Are you asking for an implementation of QMetaEnum.fromType()?
>>>
>>> For example...
>>>
>>> metaenum = QMetaEnum.fromType(type(Qt.Key_F1))
>>
>> That'd be useful indeed, IMHO!
>>
>>>> Phil, how complicate is it?
>>>> Do you have any interest/plan to do it...?
>>>
>>> It shouldn't be too difficult (famous last words). This area needs an
>>> update anyway to add support for Q_ENUM(), Q_FLAG() and Python enum
>>> objects.
>>
>> Oh, if PyQt enums would be a subclass of Python's enum.Enum (or
>> enum.IntEnum) objects - that'd be nice! :)
>
> C++ scoped enums are implemented as Python enums, but there are very
> few of them in Qt at the moment. Changing the implementation of
> traditional enums would (IMHO) cause compatibility issues.
Deprecate the classic implementation for 'awhile' and also provide them
all as Python enums? I'll also note that type(MyEnum.a_value) -> MyEnum
so that part is easy with Python enums.
Cheers,
-kyle
More information about the PyQt
mailing list