[PyQt] [SIP] TypeError: unable to convert a C++ Class::ScopedEnum instance to a Python object

Phil Thompson phil at riverbankcomputing.com
Sun Oct 6 21:26:15 BST 2019


On 06/10/2019 20:51, Denis Rouzaud wrote:
> Hi Phil,
> 
> Thanks for the reply.
> 
> I don't see anything particular in that file, except a difference: my 
> enum
> is not declared in the same file/class that the one emitting the 
> signal. Is
> there some kind of include I could add, or some method code in the 
> signal?
> 
> Otherwise, I could not find any ScopesStripped annotation. Is it worth 
> a
> try? Do you have any example?

The .sip file I mentioned.

Phil

> Cheers,
> Denis
> 
> Le sam. 5 oct. 2019 à 10:44, Phil Thompson 
> <phil at riverbankcomputing.com> a
> écrit :
> 
>> On 02/10/2019 07:48, Denis Rouzaud wrote:
>> > Hi list,
>> >
>> > I have a scoped enum in a class, a signal emitting this enum.
>> >
>> > So something like
>> >
>> > MyClass
>> > {
>> >   public:
>> >     enum class MyEnum
>> >     {
>> >     .....
>> >     };
>> >
>> >    signals:
>> >         void mySignal( MyEnum enum );
>> > }
>> >
>> >
>> > If in Python, I do:
>> >
>> > def slot( enum ):
>> >   print( enum );
>> > myClassInstance.mySignal.connect(slot)
>> >
>> > I get this error:
>> > TypeError: unable to convert a C++ MyClass::MyEnum instance to a Python
>> > object
>> >
>> >
>> > Any idea how to solve this?
>> 
>> The following seems to work fine...
>> 
>> from PyQt5.QtNetworkAuth import QOAuth1
>> 
>> def slot(e):
>>      print(e)
>> 
>> auth = QOAuth1()
>> auth.statusChanged.connect(slot)
>> 
>> ...so I'd suggest looking at qabstractoauth.sip (and maybe the
>> ScopesStripped annotation).
>> 
>> Phil
>> 



More information about the PyQt mailing list