python - 解释按下的键

标签 python pygame keypress

我正在构建一个用 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     

其中 fwdbwd 是向前和向后激活电机的函数。

当我运行脚本时,它会很好地完成循环,但电机不会对按住的键做出响应。当我添加打印语句时,我注意到这也没有打印到控制台上。

请问有人知道如何继续吗?

最佳答案

我不是 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/

相关文章:

python - 如何在 mac OSX 10.9.4 上卸载 pygame

c# - 覆盖 ProcessCmdKey 时如何检测 shift+tab

python - 2to3 进行多次导入

python - 将表格数据放入 python 中的最佳方法是什么?

python - 类型错误 : object of type 'int' has no len() - Python/Pygame

python - pygame.错误: display Surface quit after filling the surface black

python - 如何在没有所需外部库模块的其他系统上运行我的 Python 代码?

Python 循环中字符串比较

java - 单键连续移动?

javascript - 是否可以使用 ng-keypress 监听方向键?