python - 解释按住的键
问题描述
我正在构建一个Raspberry Pi
用 Python 编写的流动站,我希望通过SSH
. 因此,我会运行脚本,然后希望漫游车实时按照我提供的方向移动,就像遥控车一样(想想上键、下键、左键、右键)。
我在网上读到其中一种可能性可能是使用该pygame.key.get_pressed()
功能,但这在我的外壳中不起作用。当我在我的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 并创建一个窗口,并且该窗口必须处于焦点中。然后它将起作用。如果这对您不方便,那么您必须挂钩键盘的按键事件,以便获得全局按键,无论哪个窗口处于焦点。
希望这可以帮助。
推荐阅读
- python - 使用 multiprocess.Pool 同时运行 2 个应用程序
- c# - C#:设计一个更快的 Assert 函数,仅在触发时格式化错误字符串
- ruby-on-rails - Ruby on Rails 应用程序 - 没有要加载的文件
- excel - 将超过 24 小时的时间转换为 24 小时的时间
- docker - 从 docker-compose 容器(laradock)内部访问主机 VPN
- python - 任何人都可以在机器人框架中帮助我,如何禁用麦克风和摄像头访问或在弹出窗口打开时单击允许?
- python-3.x - 使用 OpenCV 为 png 设置白色背景而不是透明度
- xpages - 在 xpage 上寻找签名按钮的最佳方法
- oracle-sqldeveloper - 在oracle sql developer中将值与VARCHAR2进行比较
- javascript - ECONNREFUSED 用于从本地主机到另一个本地主机的代理请求