【发布时间】:2016-10-07 18:23:14
【问题描述】:
我为屏幕阅读软件构建了具有一些辅助功能的简单文本编辑器。 我正在使用 Python for .NET (pythonnet) 来显示包含富文本框的表单。 当用户在一段时间后按 Tab 键时,它会弹出一个上下文菜单,其中包含所选元素的补全。 好的,它适用于 Python 对象,但不适用于 .net 实时对象,这个问题没有解决方案。 现在,我想用我正在编辑的模块的所有名称和定义构建一个 TreeView 对象。
所以,例如我输入:
import sys
import os
lst = list()
等等... 如果我使用源代码的 jedi.names,我可以检索 os、sys 和 lst。 对于每个名称,我想检索子定义,例如 sys 和 os 模块的函数,以及 lst 的方法。 我找不到使用绝地的方法:
names = jedi.names(MySource)
names[0].defined_names() # works for sys
names[1].defined_names() # works for os
names[2].defined_names() # doesn't work for lst instance of list().
有什么建议吗? 我尝试使用越来越多的编辑器,但可访问性支持非常非常糟糕......
【问题讨论】:
-
什么是
MySource对象? -
您不会期望看到
import sys的任何自动完成,这是一个完整的声明。但是,如果它是from sys import,那么您会期望一些自动完成选项。 -
@denfromufa,我认为
MySource只是一个包含第一个代码块中显示的源代码的字符串。 -
您能更好地描述您的用例吗?我很乐意添加此功能(我是 Jedi 的创建者)。你想列出一个实例的所有属性(包括超类)还是你想要一个实例的所有属性的列表,这些属性只在那个类中定义?
标签: python autocomplete python-jedi