[PyQt] Qt/PyQt 5.9.x. Correct way to get an "enumeration flags" to return 0?

J Barchan jnbarchan at gmail.com
Thu Jul 11 15:59:21 BST 2019


On Thu, 11 Jul 2019 at 15:10, Phil Thompson <phil at riverbankcomputing.com>
wrote:

> On 11/07/2019 07:56, J Barchan wrote:
> > On Wed, 10 Jul 2019 at 21:28, Barry Scott <barry at barrys-emacs.org>
> > wrote:
> >
> >>
> >>
> >> On 10 Jul 2019, at 11:55, J Barchan <jnbarchan at gmail.com> 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!

-- 
Kindest,
Jonathan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20190711/cc890a3c/attachment-0001.html>


More information about the PyQt mailing list