11

組み込みのinput()関数を介してユーザーから情報を取得するPythonスクリプトがあります。

私の質問は、バックスペースキーと矢印キーが正しく機能しない理由と、意図したとおりに機能するように修正するにはどうすればよいかということです。

私が抱えている問題の簡単な例...

#!/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」を削除しようとすると、左に移動する2つのスペースを削除して「1」を削除する代わりに^ [[D ^ [[D ^ Hが表示され、値がプログラムをクラッシュさせました。

すべてのキーが意図したとおりに機能するようにこれを修正するにはどうすればよいですか?

4

2 に答える 2

21

readline標準ライブラリからモジュールをインポートします。stdinを自動的にラップします。

于 2013-02-10T09:43:18.137 に答える
1

tkinterライブラリを調べてください:

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

SOに関するライブラリについての良い議論もあります:

tkinterで矢印キー入力コードが機能しない

于 2013-02-10T09:38:17.707 に答える