<div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 11 Jul 2019 at 16:07, Phil Thompson <<a href="mailto:phil@riverbankcomputing.com">phil@riverbankcomputing.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 11/07/2019 15:59, J Barchan wrote:<br>
> On Thu, 11 Jul 2019 at 15:10, Phil Thompson <br>
> <<a href="mailto:phil@riverbankcomputing.com" target="_blank">phil@riverbankcomputing.com</a>><br>
> wrote:<br>
> <br>
>> On 11/07/2019 07:56, J Barchan wrote:<br>
>> > On Wed, 10 Jul 2019 at 21:28, Barry Scott <<a href="mailto:barry@barrys-emacs.org" target="_blank">barry@barrys-emacs.org</a>><br>
>> > wrote:<br>
>> ><br>
>> >><br>
>> >><br>
>> >> On 10 Jul 2019, at 11:55, J Barchan <<a href="mailto:jnbarchan@gmail.com" target="_blank">jnbarchan@gmail.com</a>> wrote:<br>
>> >><br>
>> >> If I return QOrientations() that works, but I'm unsure if that<br>
>> >> guarantees<br>
>> >> to return zero.<br>
>> >><br>
>> >><br>
>> >> I've not tried this - not ready to update Qt yet - does this print 0<br>
>> >> to<br>
>> >> confirm the value in the enum?<br>
>> >><br>
>> >> print( int( QOrientations())<br>
>> >><br>
>> >> Barry<br>
>> >><br>
>> >><br>
>> > I confirm that int( QOrientations() ) returns 0.  Assuming that is<br>
>> > consistent/deliberate and not random (which I imagine it is) I guess<br>
>> > that<br>
>> > is what I will use here.<br>
>> ><br>
>> > I am still a little troubled by the fact that I can convert enum to int<br>
>> > via<br>
>> > int(QOrientations(enum_value)) but have trouble converting int to enum<br>
>> > via<br>
>> > QOrientations(int_value).  However the latter does seem to be a PyCharm<br>
>> > IDE<br>
>> > warning ("Unexpected type 'int', expected 'Orientations',<br>
>> > 'Orientation'")<br>
>> > but works at run-time, so I guess it's OK even if I cannot find a<br>
>> > formula<br>
>> > which works without warning.  It would be nice to see a PyQt expert<br>
>> > statement on what is the correct way to handle this not-unusual<br>
>> > requirement....<br>
>> <br>
>> As you say the warning is coming from your IDE and I have no idea what<br>
>> introspection it is doing to determine exactly what types are allowed.<br>
>> As Orientation is an enum then an int is also allowed.<br>
>> <br>
>> Phil<br>
>> <br>
> <br>
> Hi Phil,<br>
> <br>
> You wrote:<br>
> <br>
> As Orientation is an enum then an int is also allowed.<br>
> <br>
> <br>
>  Yes, Orientation is an enum, so Orientation(0) is an acceptable <br>
> construct<br>
> for that.  But the function returns an Orientations, not an <br>
> Orientation.<br>
> Note the spelling (the extra "s" on the end), it's vital.  Orientations <br>
> is<br>
> a *flags*, not an *enum*.  The IDE accepts Orientation(0) (an enum) but <br>
> not<br>
> Orientations(0) (a flags).  For Orientations it only accepts one or <br>
> more<br>
> Orientation joined together.<br>
> <br>
> That is why in my latest post a while ago, which you don't seem to be<br>
> replying to, I said I seemed to have cracked it: Orientations(0) <br>
> offends<br>
> the IDE, but Orientations(Orientation(0)) works good!<br>
<br>
Yes, I know. As we both said, that warning is coming from the IDE. <br>
Orientations(0) is fine as far as PyQt is concerned (<span class="gmail_default" style="font-family:tahoma,sans-serif"></span>because passing <br>
Orientation is Ok and, therefore, passing 0 is Ok).<br>
<br>
Phil<br>
</blockquote></div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Hi Phill,</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Yes, I see, thanks.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">It's a touch confusing (to me).  I have an answer which works for me now, so the following is an academic question not a show-stopper.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">You made the point of saying:</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote"><span class="gmail_default"></span><span style="font-family:Arial,Helvetica,sans-serif">because passing </span><span style="font-family:Arial,Helvetica,sans-serif">Orientation is Ok and, therefore, passing 0 is Ok</span>  </blockquote><div><br></div><div><div class="gmail_default" style=""><span style="font-family:tahoma,sans-serif">which implies that 0 is a valid </span><font face="courier new, monospace">Orientation</font><span style="font-family:tahoma,sans-serif">.  The C++ code for the function returning an </span><font face="courier new, monospace">Orientations</font><span style="font-family:tahoma,sans-serif"> just goes </span><font face="courier new, monospace">return 0</font><font face="tahoma, sans-serif">.  When I tried that first from Python/PyQt I got a <i>run-time</i> error (so nothing to do with IDE) stating something like "0 is an int and cannot be converted/used as a Orientations".  I guess this is because at some level the C++ </font><font face="courier new, monospace">enum </font><font face="tahoma, sans-serif">stuff is just treated as an </font><font face="courier new, monospace">int</font><font face="tahoma, sans-serif">, but in Python/PyQt </font><font face="courier new, monospace">Orientation</font><font face="tahoma, sans-serif">/</font><font face="courier new, monospace">Orientations</font><font face="tahoma, sans-serif"> are implemented as some kind of <i>class</i>, and that's different enough to cause the run-time failure, is that the reason?</font></div><br></div><div>-- <br></div><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><span style="font-family:tahoma,sans-serif">Kindest,</span></div><div><span style="font-family:tahoma,sans-serif">Jonathan</span></div></div></div></div></div></div>