[英]Binding key presses
我目前正在做一個項目,我從我的筆記本電腦通過 ssh 連接到樹莓派來控制一些電機。 我用 Python 編寫了一些代碼,允許您輸入一個字母,並根據字母向前或向后移動。 但是,您必須在每個字母后按 Enter 才能執行代碼。 有沒有一種方法可以讓界面檢測字母而不需要按回車鍵。 我知道你可以在 tkinter 中綁定按鍵,但我不能通過 ssh 來做到這一點。 提前致謝
您可以使用curses
庫。
您可以使用screen.getch()
函數獲取按下的鍵。 它將返回密鑰的十進制代碼(請參閱ASCII表 )。
一個例子:
import curses
screen = curses.initscr()
curses.cbreak()
screen.keypad(1)
key = ''
while key != ord('q'): # press <Q> to exit the program
key = screen.getch() # get the key
screen.addch(0, 0, key) # display it on the screen
screen.refresh()
# the same, but for <Up> and <Down> keys:
if key == curses.KEY_UP:
screen.addstr(0, 0, "Up")
elif key == curses.KEY_DOWN:
screen.addstr(0, 0, "Down")
curses.endwin()
另一種選擇是sshkeyboard庫。 只需pip install sshkeyboard
,然后使用以下代碼通過 SSH 檢測按鍵:
from sshkeyboard import listen_keyboard
def press(key):
print(f"'{key}' pressed")
def release(key):
print(f"'{key}' released")
listen_keyboard(
on_press=press,
on_release=release,
)
在def press
您可以有一些邏輯來對特定鍵做出反應:
def press(key):
if key == "up":
print("up pressed")
elif key == "down":
print("down pressed")
elif key == "left":
print("left pressed")
elif key == "right":
print("right pressed")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.