[PyQt] PyQt/PyCharm/PEP problem with PyQt types

J Barchan jnbarchan at gmail.com
Tue Nov 21 16:11:44 GMT 2017


This is my first post to this mailing list.  I am a Python(3)/PyQt/Qt
newbie, so please bear with me!

I use PyCharm to do my PyQt work.  The editor is very good at "highlighting
dubious constructs", often relating to (what I understand to be) external
"PEP" warnings.  I "annotate" my functions with the types of parameters &
return values, to check for warnings and to help with code completion
suggestions.

I am having problems with parameters/return types which are supposed to be
PyQt objects but where a valid value is *None* in Python (corresponding to
0/NULL in C++).  (This is perhaps a general Python problem maybe not
specific to PyQt/Qt, I don't know, but it's a problem in the context of
PyQt.)

Example of my own function return type:

def myfunc() -> QWidget:
    if ...:
        return mywidget
    return *None*

Example of calling PyQt function:

mywidget.setParent(*None*)

In both these cases PyCharm highlights the *None* and warns me "Expected
type 'QWidget', got 'None' instead".  This is to do with "type inspections".

(There are however *some* cases, I think, where I have looked at a PyQt
function declaration stub in the .pyi file which *seemed* to me to have the
same signature yet it did *not* complain about None, although I cannot
recall which/what any difference was.)

Wherever I have a Python-object type for either a parameter or a return
value I expect None to be acceptable.  What is going on here, what do I
have to do to my PyCharm/PyQt code acceptable without this warning (and,
no, I don't want to turn all "type inspection" warnings off)?

Many thanks in advance if I get an answer!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20171121/adc76531/attachment.html>


More information about the PyQt mailing list