簡體   English   中英

如何在python中按下最后一個鍵?

[英]How to get the last key pressed in python?

首先,我想說,我知道有一個解決方案與詛咒。
我的程序是一個每秒運行的while循環。 每一秒我都想得到最后一個被按下的按鍵。 因此,如果你在循環睡眠時按下一個鍵我想要保存該鍵,這樣我就可以獲得最后按下的鍵,即使它不再被按下了。 我不希望保存的密鑰在獲取后被“刪除”。 因此,當用戶按下“a”鍵時,我希望每秒鍾一次,直到他按下另一個鍵。 如果按下特定鍵我想打印文本。 這個文本我想使用stdout的重定向寫入文件:

 ./test.py > file.txt

用curses解決我的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不是使用keypress事件的程序的最佳選擇。 但我有理由為什么我使用python這個。

非常感謝您的答案。

您可以安裝和使用getch包。

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

(你可能需要使用getch.getche而不是getch.getch 。你的問題並不完全清楚)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM