2016-02-26 29 views
0

在IDLE中,没有清晰的屏幕,在阅读论坛后,最好的方法显然是打印大量的“\ n”。然而,在玩了IDLE之后,我发现了一个问题。当我的游戏在使用打印语句打印出指令后等待输入时,我输入'control-z',而不是输入任何有用的字符,而IDLE开始逐个删除由打印语句显示的文本。控制 - Z在Python代码

我的主要问题是,我该如何在代码本身手动输入'control-z',所以我可以利用这个功能?

如果您对我的故事感到困惑,请参阅以下示例代码,并通过点击control-z自己尝试。

print("Some Text") 
print("More Text") 
input("The Input (Hit Control - Z Here):") 

回答

1

^Z有点乱。 ascii控件char^D通常被解释为EOT,传输结束,在Unix和许多其他系统上意味着文件结束,关闭应用程序。 Ascii^Z旨在被解释为SUB,替代,无论如何。编辑使用它作为UNDO(意味着撤消^ X切)。微软(和其他一些老系统)至少有时会将^ Z解释为文件结尾,与* nix上的^ D具有相同的效果。

Windows控制台在^ Z后关闭文本应用程序。^D传递给应用程序。作为跨平台的应用程序,IDLE在^ D关闭。 IDLE用于在Windows上关闭^ Z,但现在对我来说,它只会删除提示。 (我不知道这个替代方案是否有用。)我没有看到您报告的渐进式删除。你运行什么操作系统和Python版本?

要回答你的主要问题:你不能。 input通常用于赋值语句:string = input('prompt')。模仿输入语句的方法是直接分配'用户输入':s = 'simulated user input'。但是,对于被管理输入窗口的程序拦截并且从未发送给python程序的字符,这不起作用。

IDLE的Shell通常模仿Python的交互式控制台。后者(至少在Windows上)使除当前输入以外的所有内容都成为只读。壳牌遵循套件。在执行用户代码方面,模仿特别严格。它的目的是在IDLE中测试的用户代码应该在没有IDLE的情况下以Python运行。 IDLE在Python无法响应用户代码时清除交互式shell是错误的。

对于编辑器和输出窗口,^ A(全部选中),然后是退格键(删除),删除或^ X(剪切)清除窗口。

然而,Shell的编辑命令比许多(大多数?)控制台和菜单系统多。这些补充是允许的,因为它们只是交互式的,不能从用户代码访问。已经有各种建议和补丁来清除部分或全部的shell窗口。 https://bugs.python.org/issue6143有一些讨论和建议。