问题描述
我对PYSID、QT和PYTHON非常陌生。
我设法设置了一个带有基本窗口和关闭应用程序的按钮的项目。
我的问题是,vscode不知何故不会显示所有可用的属性,即使代码可以很好地与它们一起运行。
请注意,除了信号clicked
之外,还建议了一系列其他属性。如果我将鼠标悬停在clicked
上,它会告诉我clicked: Any
只有在调试过程中,vscode才会告诉我点击的是什么:
当前设置:
- 操作系统:Linux
- 已安装
pyside2
的Virtualenv - 使用
ms-python.python
和ms-python.vscode-pylance
ui/MainWindow.ui
文件和相应生成的ui/MainWindow_ui.ui
文件,pyside2-uic
推荐答案
Pylance尝试使用存根文件(您可以使用Go to Definition遍历它)来提供智能感知功能。根据Qt docsclicked
,clicked
信号应在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上打开另一个应该会有帮助。
这篇关于如何用PYSID正确设置vscode?缺失的建议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!