[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