Python 接口定义存根/模块(.pyi 文件)是一种标准化的方式来描述可从 Python 访问但并非以 Python 代码实现的 API。它们可以包含类型信息,高级 Python 编辑器(如带有 Python 扩展的 Visual Studio Code)可以利用这些信息提供非常智能的自动补全和静态类型检查。
我根据新的在线帮助为 VC 4.8 Premium 的 API 生成/制作了完整的 pyi 定义。
以下是一个(无声)演示,展示如何在 Visual Studio Code 中使用这些文件,并使用 Pylance 作为类型检查器。
功能:
-
包含在线帮助中描述的所有 Python 类及其成员(属性、方法、构造函数、事件)以及常量。
-
尽可能包含准确的类型信息。
-
包含描述和指向在线帮助的直接链接。
-
模块组织与 VC 类似。可以导入 vcScript、vcCommand、vcVector 等中的函数。
注意事项:
-
某些基类(如 vcBehaviour)的定义必须包含可能仅存在于某些行为中的属性。这些属性在描述中会有注释。
-
类型检查器不再真正支持 Python 2,因此它们会抱怨 print 语句和类型之间的赋值,因为无法使用类型转换。
-
动态创建的属性无法预知,因此不包含在内。
如何与 Visual Studio Code 一起使用
-
下载 pyi 文件并将其解压到某个方便的位置。
-
安装 VS Code、Python 扩展和 Pylance 扩展。
-
将 pyi 模块文件夹添加到 Python 扩展的“python.autoComplete.extraPaths”和“python.analysis.extraPaths”设置中。
-
将 VC 配置为使用 VS Code 作为外部 Python 编辑器。
-
从 VC 打开 Python 脚本,配置 VS Code 信任文件夹路径以启用所有编辑器功能。
-
在 VS Code 中启用类型检查。
从此处下载文件:
vcApi VC48.zip(146.6 KB)
15 个赞
外部库在 Python 脚本中的自动补全
在哪里找到“vcCommand”文件
ChatGPT 作为 VC Python API 的编码助手 – 有人运气更好吗?
带自动补全的集成编辑器
缓冲区资源位置随放置位置变化
Este 2023年10月20日 上午8:052
这太棒了!我将 vcApi 文件夹提取到我的 VC 安装目录下的 Python\Commands 文件夹中。以下是我修改 Pylance 设置并使其工作的方式。
pylance_settings1566×760 86.9 KB
4 个赞
ProLean 2023年10月23日 下午2:333
line_out 2024年4月18日 上午5:534
所以,在我花了几个小时试图让这个在我的新机器上运行之后,我终于搞定了。
-
首先按照主帖中的说明操作。
-
然后,如果你懒得阅读所有内容,请将文件放入 @Este 评论中描述的安装文件夹中。
2a) 我在这里粘贴了路径字符串,这样你就不需要替换所有斜杠:“C:/Program Files/Visual Components/Visual Components Premium 4.8/Python/Commands/vcApi”
-
这是我的技巧: 在 Visual Studio Code 中创建工作区,设置工作区使自动补全开始工作。我只选择我的 C 盘。
2 个赞
ZF_DJ 2024年5月7日 上午7:395
你好,
谢谢!这太棒了。
我对 Visual Code 和 VC 中的 Python 编程都很陌生,自动补全功能帮助很大!
是否可以在 Visual Code 中跟踪执行?
Lefa 2024年5月7日 下午12:596
你好,
不确定是否可以使用外部编辑器跟踪执行,但内部编辑器可以做到这一点。
此致,
Lefa
TSy 2024年12月11日 下午12:217
已更新以匹配 VC 4.10.0 中的 Python API
vcScript VC 410.zip(148.0 KB)
来自差异的部分 AI 生成摘要:
以下是 vcApi.pyi 文件在 4.8 和 4.10 版本之间的主要变化:
-
新属性和方法:
-
vcApplication:
-
添加了 LayoutVisualizationSettings 属性。
-
添加了 SimulationWorld 属性。
-
vcBehaviour:
-
添加了 Visible 属性,带有 getter 和 setter。
-
vcLayout:
-
添加了新类,包含属性 ChildLayouts、ParentLayout、Visualization,以及方法 Clone 和 MoveChildrenFrom。
-
vcLayoutVisualization 和 vcLayoutVisualizationSettings:
-
vcLight:
-
deleteLight 方法现在接受 vcLight 对象而不是字符串名称。
-
vcProcessController:
-
vcPythonProcessHandler:
-
更新了 condition 和 triggerCondition 方法,接受 Callable[[], None] 而不是 Callable[[], bool]。
3 个赞
asirit 2026年2月5日 下午11:178
有人能告诉我如何解决这个 vcApplication 智能感知问题吗?
image681×343 26.3 KB
TSy 2026年2月6日 上午6:209
我认为导入无法解析是因为 vcApplication 在这些 API 文件中没有定义为单独的模块,类定义在 vcScript 中。
需要创建一个单独的 vcApplication.pyi 文件,其中包含静态模块级成员和一个空的 vcApplication 文件夹,才能使直接导入生效。
你可能只需在代码中使用 vcApplication 前缀即可,例如 vcApplication.loadBitmap(...)。