私がやろうとしていること
ラップタイミングでストップウォッチを設計しようとしています。「L」を押すとラップが完了し、「S」を押すとすべてのラップが完了し、タイミングが順番に表示されます。
C++ では、conio.h の関数 _getch() を使用してこれを行うことができ、非常に簡単です。このプログラムはPythonで書きたいと思っています.
それでも、このリンクでプログラム(キューブのタイミング用)を作成しました: Cube timer
問題
_getch() のような関数はありません。これは問題です。ラップの最後にキーとエンター キーを押すことができないためです。時間がかかり、ユーザーにとってイライラするからです。
私が読んだもの
curses ライブラリについて読みましたが、残念ながら Windows ポートがありません。
ウェブサイトに従って動作するはずのプログラムを試しました。リンクからでした
しかし、うまくいきませんでした。
私が試したこと:
msvcrt.getch()
>>> msvcrt をインポート >>> msvcrt.getch() '\xff'
FF は 255 に相当する 16 進数だと思います。
なぜこれが起こっているのか理解できませんでした。
readch()
@martineauで提案されているようにmsvcrt をインポート
def readch(echo=True): "Windows で 1 文字を取得します。" while msvcrt.kbhit(): # キーボード バッファをクリアする msvcrt.getch() ch = msvcrt.getch() while ch in '\x00\xe0': # 矢印またはファンクション キーのプレフィックス? msvcrt.getch() ch = msvcrt.getch() # echo の場合、2 番目の呼び出しで実際のキー コードが返されます: msvcrt.putch(ch) return ch.decode()
a = []
for i in range(10): a.append(readch())
私が得たエラー:
>>>
Traceback (most recent call last):
File "C:/Python25/1.py", line 30, in <module>
a.append(readch())
File "C:/Python25/1.py", line 25, in readch
return ch.decode()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0: ordinal not in range(128)
助けが必要なこと
_getch() のように機能する関数、または Windows マシンで機能する同等のもの。
機械スペック
Python IDLE 2.5.4 または 2.6 または 2.7
Windows XP SP3