首先我想說,我知道有一個解決方案與詛咒。
我的程序是一個while循環,每秒運行一次。每一秒我都想得到最後一個被按下的鍵。所以如果你在循環睡眠時按下一個鍵,我希望這個鍵被保存,這樣我就可以得到最後按下的鍵,即使它沒有按下時也是如此。我不想讓保存的密鑰在獲取後被「刪除」。因此,當用戶按下「a」鍵時,我想每秒鐘都拿到它,直到他按下另一個鍵。如果按下特定的鍵,我想打印文本。本文我想用標準輸出重定向到文件寫的:與詛咒解決如何獲取在python中按下的最後一個鍵?
./test.py > file.txt
我的Python PROGRAMM看起來是這樣的:
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()
obout該解決方案的問題是詛咒讓我瘋狂輸出。我只按一次的「O」鍵,PROGRAMM停止後file.txt的是這樣的:
^[[?1049h^[[1;30r^[(B^[[m^[[4l^[[?7h^[[H^[[2Jtest
^[[30;1H^[[?1049l^M^[[?1l^[>
但它應該是這樣的:
test
我會,如果有人很感激寫一個答案。我知道python不是使用按鍵事件的程序的最佳選擇。但我有理由爲什麼我使用python。
非常感謝您提前爲您的答案。
如果直接寫信給你的文件,而不是重定向標準輸出 - 那麼你就不會有「瘋狂輸出「從你的文件中的詛咒... –
我有一些其他的程序寫在.fifo中,我總是使用重定向。我想保留這個「格式」,我可以輕鬆處理它們。 – timakro