[PyQt] QPyNullVariant

Wilbert Berendsen wbsoft at xs4all.nl
Thu Jul 26 13:21:57 BST 2012

Op Mon, 16 Jul 2012 12:11:11 +0100
Phil Thompson <phil at riverbankcomputing.com> schreef:

> On Fri, 13 Jul 2012 15:49:48 +0200, Rodolfo Zitellini
> <xhero.gm at gmail.com> wrote:
> > The offending code is in setup.py, when it reads the language:
> >     language = QSettings().value("language", "")
> >     print language
> >     if not language:
> >         try:
> >             language = locale.getdefaultlocale()[0]
> >         except ValueError:
> >             pass
> >     if not language:
> >         language = "C"
> >     return language
> > 
> > in linux, language prints None, on osx it prints QPyNullVariant. it
> > will then evaluate False in "if not language" and then crash when it
> > arrives in __init__.py.
> > 
> > This used to work with qt 4.7 on osx. Just upgrading to 4.8 breaks
> > everything.
> > Any ideas?
> It would suggest that there is a null QVariant stored in the settings
> for "language". If there was no value stored then "" would be
> returned. A workaround would therefore be to update or delete the
> settings data either manually or with a little script.
> Phil

I'm the author of Frescobaldi.

I was not expecting QPyNullVariant() to be returned when I specify a
default value. Why is it that bool(the returned QPyNullVariant)
defaults to True?

What is the best way to check for a possible QPyNullVariant to be
returned from the QSettings().value() method? (I.e. it should also work
on PyQt-4.7 systems).

My code uses QSettings().value almost everywhere. I was happy with the
simple interface, although it would be nice if the returned value would
be forced in the type of the default value if specified.

When I must check for more possible types to be returned, I must create
a wrapper function for it, I guess....


Wilbert Berendsen

More information about the PyQt mailing list