Re: Qt/PyQt 5.9.x. Correct way to get an "enumeration flags" to return 0?
Phil Thompson <[email protected]>
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <[email protected]> |
On 11/07/2019 15:59, J Barchan wrote: > On Thu, 11 Jul 2019 at 15:10, Phil Thompson > <[email protected]> > wrote: > >> On 11/07/2019 07:56, J Barchan wrote: >> > On Wed, 10 Jul 2019 at 21:28, Barry Scott <[email protected]> >> > wrote: >> > >> >> >> >> >> >> On 10 Jul 2019, at 11:55, J Barchan <[email protected]> wrote: >> >> >> >> If I return QOrientations() that works, but I'm unsure if that >> >> guarantees >> >> to return zero. >> >> >> >> >> >> I've not tried this - not ready to update Qt yet - does this print 0 >> >> to >> >> confirm the value in the enum? >> >> >> >> print( int( QOrientations()) >> >> >> >> Barry >> >> >> >> >> > I confirm that int( QOrientations() ) returns 0. Assuming that is >> > consistent/deliberate and not random (which I imagine it is) I guess >> > that >> > is what I will use here. >> > >> > I am still a little troubled by the fact that I can convert enum to int >> > via >> > int(QOrientations(enum_value)) but have trouble converting int to enum >> > via >> > QOrientations(int_value). However the latter does seem to be a PyCharm >> > IDE >> > warning ("Unexpected type 'int', expected 'Orientations', >> > 'Orientation'") >> > but works at run-time, so I guess it's OK even if I cannot find a >> > formula >> > which works without warning. It would be nice to see a PyQt expert >> > statement on what is the correct way to handle this not-unusual >> > requirement.... >> >> As you say the warning is coming from your IDE and I have no idea what >> introspection it is doing to determine exactly what types are allowed. >> As Orientation is an enum then an int is also allowed. >> >> Phil >> > > Hi Phil, > > You wrote: > > As Orientation is an enum then an int is also allowed. > > > Yes, Orientation is an enum, so Orientation(0) is an acceptable > construct > for that. But the function returns an Orientations, not an > Orientation. > Note the spelling (the extra "s" on the end), it's vital. Orientations > is > a *flags*, not an *enum*. The IDE accepts Orientation(0) (an enum) but > not > Orientations(0) (a flags). For Orientations it only accepts one or > more > Orientation joined together. > > That is why in my latest post a while ago, which you don't seem to be > replying to, I said I seemed to have cracked it: Orientations(0) > offends > the IDE, but Orientations(Orientation(0)) works good! Yes, I know. As we both said, that warning is coming from the IDE. Orientations(0) is fine as far as PyQt is concerned (because passing Orientation is Ok and, therefore, passing 0 is Ok). Phil _______________________________________________ PyQt mailing list [email protected] https://www.riverbankcomputing.com/mailman/listinfo/pyqt