我正在构建一个用 Python 编写的 Raspberry Pi
漫游器,我希望通过 SSH
控制该漫游器。因此,我会运行脚本,然后希望流动站按照我提供的实时方向移动,就像遥控汽车一样(想想键向上、键向下、键向左、键向右)。
我在网上读到,一种可能性可能是使用 pygame.key.get_pressed() 函数,但这在我的 shell 中不起作用。当我在我的 raspberry pi python shell 中运行该命令时,我只收到一个零元组,该元组会在几分之一秒后超时。
我的代码如下:
speed = input('How fast do you want the rover to go? Give a value lower than 1: ')
while True:
keys = pygame.key.get_pressed() #checking pressed keys
if keys == True:
if keys[pygame.K_UP]:
fwd(speed)
if keys[pygame.K_DOWN]:
bwd(speed)
if keys == False:
MS.motor1off
MS.motor2off
其中 fwd
和 bwd
是向前和向后激活电机的函数。
当我运行脚本时,它会很好地完成循环,但电机不会对按住的键做出响应。当我添加打印语句时,我注意到这也没有打印到控制台上。
请问有人知道如何继续吗?
最佳答案
我不是 pygame 专家,也从未使用过 key.get_pressed()
方法。我使用 event.get()
效果很好。这是我使用的代码的最小示例:
import pygame
pygame.init()
WINDOW_WIDTH = 250
WINDOW_HEIGHT = 120
pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
while True:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
print('works!')
您必须确保初始化 pygame 并创建一个窗口,并且该窗口必须位于焦点中。然后它就会起作用。如果这对您来说不方便,那么您必须 Hook 键盘的按键事件,以便获得全局按键,无论哪个窗口处于焦点状态。
希望这有帮助。
关于python - 解释按下的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51774662/