绑定按键

Binding key presses

我目前正在做一个项目,我从我的笔记本电脑通过 ssh 连接到 raspberry pi 来控制一些电机。我在 Python 中编写了一些代码,允许您输入一个字母,并根据字母向前或向后移动。但是,您必须在每个字母后按回车键才能执行代码。 有没有一种方法可以让界面检测字母而无需按回车键。 我知道你可以在 tkinter 中绑定按键,但我不能通过 ssh 做到这一点。 提前致谢

您可以为此使用 curses 库。

您可以使用 screen.getch() 函数获取按下的键。它将 return 密钥的十进制代码(参见 ASCII Table)。

一个例子:

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")