PySide, PtQt: Intellisense doesn't work.


Intellisense doesn't work with most GUI toolkits including Qt, and WxWidgets.
It works perfectly with IPython's Tab Completion.

file attachments

Closed Aug 22, 2013 at 10:59 PM by Zooba
Fixed across a number of changesets.


dinov wrote Jun 18, 2012 at 11:50 PM

This is because at runtime IPython can do introspection against the live objects to see what members they have. But PySide/PyQt doesn't have good doc strings which we can parse and figure out the return types let alone the signatures of methods. Therefore intellisense tends to breakdown veru quickly.

If there's somewhere to get this information from a Python installation which includes PySide/PyQt we could update our scraper to read that information. But as is things look like they're working as about as well as they can be expected to be. For example I'm able to get completions against the module members and we include methods off of classes, and then it goes dark. See the attached screenshot.

If you're not even getting that far then you probably need to re-generate the intellisense DB using Tools->Options->Python Tools->Interpreter Options.

dinov wrote Jun 19, 2012 at 7:08 PM

dinov wrote Jun 19, 2012 at 7:08 PM

** Closed by dinov 06/19/2012 11:08AM

pminaev wrote Jul 3, 2013 at 7:24 PM

Despite the fix for the issue linked above, PyQt and PySide code analysis is still broken big time in 2.0 beta. We show members of modules with a lot of garbage in them (identifiers with random Unicode chars), and with docstrings taken seemingly randomly from other modules. The actual classes that are supposed to be there are present, but they show up in code completion as variables rather than types, and quick info says "Constant None" for all of them.

pminaev wrote Jul 31, 2013 at 11:07 PM

We don't show garbage for binary modules anymore, but intellisense for PyQt and PySide in particular is still too primitive. Specifically:

For PySide on Python 2.7 and 3,3, we show good code completion for global functions and class constructors, and we do show object members, but we don't show their signatures.

For PyQt4 on Python 2.7, we show classes and global members, but class methods all show up as fields of type object, not as actual methods.

For PyQt5 on Python 3.3, we don't show any members in the modules at all.

(This issue seems to be specific to these frameworks, and does not apply to other binary modules.)

pminaev wrote Aug 1, 2013 at 11:58 PM

I'm going to close this to indicate that the original issue is fixed, and open separate bugs for specific PyQt and PySide deficiencies.