如何用PYSID正确设置vscode?缺失的建议

2022-05-05 00:00:00 python visual-studio-code pyside pyside2

问题描述

我对PYSID、QT和PYTHON非常陌生。 我设法设置了一个带有基本窗口和关闭应用程序的按钮的项目。 我的问题是,vscode不知何故不会显示所有可用的属性,即使代码可以很好地与它们一起运行。 请注意,除了信号clicked之外,还建议了一系列其他属性。如果我将鼠标悬停在clicked上,它会告诉我clicked: Any 只有在调试过程中,vscode才会告诉我点击的是什么: 当前设置:

  • 操作系统:Linux
  • 已安装pyside2的Virtualenv
  • 使用ms-python.pythonms-python.vscode-pylance
  • ui/MainWindow.ui文件和相应生成的ui/MainWindow_ui.ui文件,pyside2-uic

解决方案

Pylance尝试使用存根文件(您可以使用Go to Definition遍历它)来提供智能感知功能。根据Qt docsclickedclicked信号应在QAbstractButton类中定义,但在类型定义(存根)中看不到此信号定义。如果你仔细观察,PyCharm从你链接的视频中的QAbstractButton类收集它,但VS Code中的Pylance在QPushButton中搜索它。

这是从PySide2开始在Pylance中就已知的问题,但根据Pylance repo,这可能源于Qt for Python的错误类型定义:

库的类型不正确或不能很好地与PyLance配合使用。我有的最好也可能是最著名的例子是PySide2(但请参阅前面的帖子中关于其他库的问题):Tons(!)错误的数量,这使得发现真正的错误变得困难。PyQt5中的相同代码(基本上是PySide2的孪生兄弟)没有引起任何来自PyLance的抱怨,所以我认为问题出在PySide2的打字上。虽然我知道,无论是PySide2的输入还是PyLance的分析结果都不一定是错误的,但事实是,大多数报告的错误都不应该存在,所以为了简单起见,我只说它不正确。

它可以在运行时访问的原因是;我猜它是在shiboken QObject类型上创建的实例。我没有任何解决办法,但它并不困扰我,因为在查找类定义中可用的信号时,我更喜欢遵循官方的Qt文档。

编辑:此问题已解决bug report,这是PYCharm能够处理自动完成的原因。在VS Code上打开另一个应该会有帮助。

相关文章