Python IDLE. 自动补全/显示完成不起作用。

19

IDLE在何时显示自动补全菜单还存在问题,最近它根本没有工作,或者更具体地说,只在交互式会话期间工作。

我一直在使用Code Blocks进行C语言编程,并且已经习惯了非常好用的自动补全功能,所以不能使用这个功能有点令人沮丧——尤其是在尝试学习新框架和查找哪个类与哪些方法相关时等等。

是否有一种简单的解决方法可以让IDLE自动补全重新运行?我正在使用Python版本2.7。

也许有一个简单的编辑器我应该考虑一下?我已经尝试过Vim,但对于我的简单需求来说有点过重了,Ninja完全无法正常工作,而Sublime Text 2则无法与我的wxpython配合使用。可供选择的编辑器应该有哪些?如果有类似Code Blocks的编辑器也不错,但如果IDLE能够稳定地工作,我也很满意!

请求澄清: 好吧,看来我可能把我的术语搞混了。通过非交互方式,我指的是例如右键单击Python文件并选择“使用IDLE编辑”。这将带出文本编辑器。你可以在此处输入所有代码。准备好后,你就可以按F5或选择运行,它将启动(我所说的)交互式终端。在这里,你可以输入代码,按回车键,然后立即评估该代码。

我的问题涉及到IDLE中的前一部分,也就是编辑代码的部分。有时在输入过程中,在一个句点之后它会显示可用方法,或者在打开括号之后它会提示期望的值。但问题是,有时它会做这些事情,有时它不会。


使用vim甚至只是gedit,访问http://ipython.org/。 - wim
@wim 抱歉,我在帖子中可能解释得不太清楚,但问题是自动完成只在交互式模式下工作。如果我只是在IDLE中随便打字,自动完成就不起作用。因此,我正在尝试找出如何使其在交互式编码时工作的方法。 - Zack
3
好的,抱歉!在使用Python时我从未觉得需要使用集成开发环境,所以对此无法提供帮助。 - wim
“只在交互式会话期间有效”?IDLE还有什么其他用途?它是一种交互式工具,对吧?那么,什么是非交互式的IDLE“会话”?运行脚本?这听起来毫无意义。你能否更新问题并解释一下? - S.Lott
请不要“添加”“请求澄清”。请重新编写问题以使其有意义。“编辑模式”不能(也不容易)进行代码完成。这不是新闻或问题,而是动态语言的结果。请简化问题,确切地说明正在发生的事情。“这引出了我猜测可能被描述为文本编辑器”。不。它不是“可以描述为…”。它就是一个文本编辑器。简化。聚焦。澄清。 - S.Lott
显示剩余3条评论
5个回答

15
到目前为止,我唯一找到的是,如果一个IDLE的编辑会话与Python Shell连接(在问题中称为“交互模式”,即在尝试运行编辑后的脚本之后),那么“非交互式”IDLE可以基于交互窗口中的值自动完成。例如,如果我输入:
a = [];
a.appen

然后按<Tab>键它不会有任何反应,但如果之前我已经输入了

a = []

在对应的Python shell中,IDLE将正确地自动完成。

因此,我的唯一建议是在Python shell窗口中导入具有相同名称的相同模块,以使它们对非交互式IDLE编辑器“可见”。


1
即使您的脚本不完整(运行时会产生错误),这也可以工作。感谢这个提示。不幸的是,您必须在构建脚本时多次运行代码才能实现这一点。然而,在代码变得更长时,这将更加有用。在较长的代码中,您倾向于使用先前定义的变量(使用F5进行测试),因此自动完成下可用的内容更多。 - VISQL

12

我也遇到了在IDLE中的同样问题,因为我想要学习Qt,所以自动完成非常有用。

正如在IDLE的设置中所说,你可以使用“Control + Space”来触发自动完成,例如在输入“QtGui.”后。然后会弹出一个菜单,在其中你可以使用箭头向上或向下滚动选择项。


2
我还不能点赞,但是谢谢user2366975! 使用Ctrl + Space非常顺畅。IDLE在Windows下运行得相当快,但在我的Mac上,自动完成选项需要很长时间才能出现。再见TextWrangler,我会重新使用IDLE。 - VDubs
因此,为了使自动完成功能正常工作,您需要先让 shell 导入一个库。然后,在按下 Ctrl+空格和 Tab 键之后,自动完成将会提供函数/类的选项。 - icypy

3

使用“IDLE编辑器窗口”,您需要先保存和执行代码。应用程序运行后,返回到编辑器窗口以使用自动完成功能。


没错,但问题已经以同样的方式回答了,六年后重复没有意义。 - sukhmel

2
有时候这与你等待获取建议的时间有关。
当你进入“选项 > 扩展 > 一般”并在“完成弹出窗口等待时间”处更改为约500毫秒时,情况会有所不同。 在我的情况下,默认值为2000毫秒。

1
在我的情况下,我不得不打开编辑器的选项菜单 -> 扩展选项卡,并查看确保启用了自动完成和其他相关选项。实际上它们已经启用了,但是仅通过单击“应用”即使我不必更改任何内容也可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接