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

J Barchan <[email protected]>
Newsgroups gmane.comp.python.pyqt-pykde
Message-ID <CABz3M_9thAEtBZdYFtC77fyUVr65qJOa_KJBRAN_pFYfu=x=sQ@mail.gmail.com>
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!

-- 
Kindest,
Jonathan

_______________________________________________
PyQt mailing list    [email protected]
https://www.riverbankcomputing.com/mailman/listinfo/pyqt
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.