/ / Pythonで最後に押されたキーを取得するにはどうすればいいですか? - Python、キーイベント

最後のキーをPythonで押さえるには? - python、keyevent

最初に私は呪いを使った解決策があることを知っていると言いたいです。
私のプログラムは毎回実行されるwhileループです。第二。毎秒私は最後に押された、または押されたキーを取得したいのです。ループがスリープしている間にキーを押した場合は、キーが保存されていることを望みます。保存したキーを取得した後に「削除」したくない。ユーザーが "a"キーを押したとき、私は彼が別のキーを押すまで毎秒それを取得したいです。特定のキーが押された場合、私はテキストを印刷したいです。このテキスト私は標準出力のリダイレクトを使用してファイルに書き込みたいです。

 ./test.py > file.txt

私のpythonプログラムは呪いを解いてこのように見えます:

import curses
from time import sleep

stdscr=curses.initscr()
stdscr.nodelay(1)
curses.noecho()
curses.cbreak()

while True:
char=stdscr.getch()
if char == 111:        #111 = "o" key
print("test")
break
elif char == 97        #97 = "a" key

#code that have to be run every second
#if the a key is the last pressed key!

sleep(1)

curses.nocbreak()
curses.echo()
curses.endwin()

この解決策に関する問題は、cursesが私にクレイジーな出力を与えるということです。私は一度だけ "o"キーを押すだけで、プログラムが停止した後file.txtは次のようになります。

^[[?1049h^[[1;30r^[(B^[[m^[[4l^[[?7h^[[H^[[2Jtest
^[[30;1H^[[?1049l^M^[[?1l^[>

しかし、それはこのように見えるはずです:

test

誰かが答えを書いたら私はとても嬉しいです。私は、Pythonがキー押下イベントを使うプログラムにとって最良の選択ではないことを知っています。しかし私はなぜ私がこれにpythonを使うのかの理由があります。

ご回答ありがとうございます。

回答:

回答№1は2

あなたがインストールして使用することができます getch パッケージ。

import getch
from time import sleep
while True:
char = getch.getch()
if char == 111:
print("test")
break
sleep(1)

(あなたが使用する必要があるかもしれません getch.getche の代わりに getch.getch。それはあなたの質問から完全には明らかではありません)