我正在尝试使用 Pygame 和 Python 2.7 来控制连接到 Raspberry Pi 的 Roomba。我通过 Putty 连接到 Pi,并通过 Putty 控制台控制它。 我遇到的问题是我无法显示 Pygame 显示屏,并且 Pygame 键盘输入仅在 Pygame 屏幕具有焦点时才有效。代码运行时没有打开任何窗口,Putty 的控制台就坐在那里。有没有办法这样打开Pygame窗口?
我有不使用 Pygame 的工作代码,但它使用 getch 进行输入,因此您只能通过传入字符切换移动,当您停止按住按键时,您无法让它停止移动。
这是我的基本代码,我只是想让 Pygame 在按下某个键时执行任何操作:
import pygame, sys
from pygame.locals import *
pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.flip()
while 1:
key=pygame.key.get_pressed()
if key[pygame.K_w]:print'w'
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == KEYDOWN and event.key == K_ESCAPE:
sys.exit()
elif event.type == KEYDOWN and event.key == K_s:
print's'
这听起来像你需要“无头”运行 Pygame:
http://pygame.org/wiki/HeadlessNoWindowsNeeded
import os
import pygame.display
os.environ["SDL_VIDEODRIVER"] = "dummy" # or maybe 'fbcon'
pygame.display.init()
screen = pygame.display.set_mode((1,1))
这个答案也可能有用:Pygame headless setup
请注意,这些要求键盘直接连接到 Raspberry Pi 本身 - 而不是您运行 PuTTY 的计算机。
如果这是您真正想要的,这里的方法可能很有用:通过 SSH 的 Pygame 不会注册击键 (Raspberry Pi 3)