Implementing a backspace in Python 3.3.2 Shell using Idle
这里有几个人在Python中寻找退格答案。我搜索过的所有问题都没有为我解答,所以这里有:
简单目标:能够在一行上打印出状态字符串,其中下一个状态将覆盖第一个状态。类似于%完成状态,而不是滚动长线1% n,2%,...等等,我们只是用最新值覆盖第一行。
现在的问题。当我在空闲时键入它:print("a\bc")我得到它作为输出:ac看起来像一个奇怪的盒子,在'a'和'c'之间有一个圆圈。使用sys.stdout.write()时会发生同样的事情。
这是空闲编辑器设置/问题吗?有人甚至知道我在Idle Shell中尝试的是否可行?
感谢您的任何见解。
PS:在Windows 7,64位系统上运行Python 3.3.2空闲。
编辑:在Notepad ++中复制输出显示Python正在打印出一个"退格"字符,而不是实际返回空格。也许我想要完成的是不可能的?
编辑:
显然,回车符
和退格\b实际上不会在空闲状态下工作,因为它使用的文本控件不能正确呈现返回/退格。
您可以为Idle编写某种补丁,但它可能比它的价值更麻烦(除非你真的喜欢闲置)
-
当我尝试这个时,我没有看到之前的文本被覆盖。我的输出是:0只精彩的鸡! 1只精彩的鸡! 2只精彩的鸡! 3只精彩的鸡! 4只精彩的鸡! 5只精彩的鸡! 6只精彩的鸡! 7只精彩的鸡! 8只精彩的鸡! 9只精彩的鸡!
-
这个答案让我觉得有些讽刺,尽管如此,甚至都没有帮助。
-
根本不是讽刺 - 可能只是Idle不能正确渲染回车,因为这在Windows的cmd窗口中完美运行。也在交互式翻译中。基于@ Nanomurf的评论,似乎Idle的shell实际上不会这样做。
-
@CmdrMoozy - 显然是误入歧途。因为我实际上并没有打开空闲(因为我发现它古怪的方式)并尝试我的代码。我希望它与代码所在的Tk文本控件的性质有关。
-
我很感激反馈。我不应该在我的Python中懒惰并坚持使用简单,舒适的空闲范围......谢谢你的2美分!
这并没有以文字的方式回答你的问题,但我认为指出通常是你所描述的界面(例如,屏幕的一部分不断更新,没有换行)的界面可能是有用的, 通常使用像ncurses这样的库来实现。
Python内置了一个curses库(http://docs.python.org/3.3/library/curses.html),它可以或多或少地实现你的最终目标。
-
你确定curses库可以在IDLE中运行吗?并且,curses在MS Windows中工作吗?
-
Python文档说"Windows的Python版本不包含curses模块。可以使用名为UniCurses的移植版本。",因此应该可以使其正常工作。 IDLE只是一个IDE,所以我真的不知道它与解释器的功能有什么关系。