11

我有一个 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”,并且该值使程序崩溃。

我该如何解决这个问题,以便所有键都按预期工作?

4

2 回答 2

21

readline从标准库中导入模块。它会自动包装标准输入。

于 2013-02-10T09:43:18.137 回答
1

查看 tkinter 库:

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

在 SO 上也有一个关于库的很好的讨论:

箭头键输入代码在 tkinter 中不起作用

于 2013-02-10T09:38:17.707 回答