问题
操作环境: VSCode + Python3.10 + PySide6/pyqt5
问题描述: 在写代码时,控件不能弹出 .clicked.connect 补全提示
解决
其他网友解决办法:pip install pyqt5-stubs
根据格式,使用了对应的版本 pip install PySide6-stubs
但安装失败,在搜索py官方文档得知,可以用名为 IceSpringPySideStubs 的插件解决存根问题。
官方地址:https://pypi.org/project/IceSpringPySideStubs-PySide6/
且官方给出了安装的方法:
PySide2: pip install IceSpringPySideStubs-PySide2
PySide6: pip install IceSpringPySideStubs-PySide6
PyQt5: pip install IceSpringPySideStubs-PyQt5
PyQt6: pip install IceSpringPySideStubs-PyQt6
效果
出现其他不能补全提示
.clicked 可以补全提示后,如果还有其他关于pyside库里面不能提示的,可以按照以下思路进行。
当安装 IceSpringPySideStubs 后,写代码时优先进入 IceSpringPySideStubs 的存根查找属性、方法,如果有就立即弹出补全提示,如果没有再进入pyside里面找,IceSpringPySideStubs使用的办法就是提前复写了缺少的属性,利用python后写代码的覆盖特性来实现,因此,我们也可以利用这一点实现某些不能补全提示的属性、方法。
例如,新建一个信号时,调用connect方法并不能补全提示:
解决办法是进入 Signal
定义里面新增
转到定义在类的入口填写 connect = None
注意:如果是属性建议是None,实际上pysid的connect是方法,但这里只是为了提供一个提示,直接作为变量好了,实测不会影响代码运行。也可以使用重写方法
最后得到效果
其他
安装以上插件后,PyCharm依然不能补全提示,原因未知,文档说可以移除PyCharm的pyside框架,但是移除了也不行。