绑定按键
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")
我目前正在做一个项目,我从我的笔记本电脑通过 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")