input()::使用Backspace和Arrow Keys

时间:2013-02-10 09:28:43

标签: python python-3.x

我有一个python脚本,它通过内置的input()函数从用户那里获取信息。

我的问题是为什么退格键和箭头键无法正常工作,如何修复它以使它们按预期运行。

我遇到问题的一个简单例子......

#!/usr/bin/env python3
while 1:
  x=input("enter integer: ")
  y=int(x)*17
  print(y)

以下是使用它的示例。

./tester 
enter integer: 3
51
enter integer: 17
289
enter integer: 172^[[D^[[D^H
Traceback (most recent call last):
  File "./tester", line 4, in <module>
    y=int(x)*17
ValueError: invalid literal for int() with base 10: '172\x08'

在尝试使用箭头键和退格键移除'1'时,^ [[D ^ [[D ^ H出现而不是删除向左移动两个空格并删除'1',并且值使程序崩溃

如何解决这个问题,以便所有按键按预期运行?

2 个答案:

答案 0 :(得分:13)

从标准库导入readline模块。 它自动包装stdin。

答案 1 :(得分:0)

查看tkinter库:

http://wiki.python.org/moin/TkInter

这里对SO的讨论也很好:

Arrow key input code not working in tkinter