【发布时间】:2013-06-06 19:21:13
【问题描述】:
我正在尝试在 Raspberry Pi 上初始化 pygame,它需要键盘中断才能执行任何操作。这是我的代码:
os.putenv ( "SDL_VIDEODRIVER" , "fbcon" )
pygame.display.init() # It hangs here
screen = pygame.display.set_mode ( ( 1024 , 768 ) )
pygame.draw.rect ( screen , ( 0 , 255 , 0 ) , ( 15 , 15 , 15 , 15 ) )
pygame.display.flip()
keyLoop = True
while keyLoop:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_DOWN:
print ( "Down arrow pressed, exiting" )
keyLoop = False
pygame.quit()
我在这里Python program won't respond until keyboard interrupt 发现了一个类似的问题,但它不允许我添加评论,我已经尝试了他们的所有建议,但仍然存在问题。如果我按 CTRL + C,然后我的图形会出现,但键盘不起作用。
谢谢
编辑
我通过完全删除 os.putenv 让它工作。问题实际上出在 config.txt 中的 Pi 设置中。我试图初始化一个比 Pi 的帧缓冲区更大的 pygame 显示。确保两者匹配(framebuffer 和 display.set_mode)使其启动正常。
【问题讨论】:
-
按下一个键后,它会正确渲染 Rect 吗?在我搜索 rPi 示例时,他们没有设置环境变量,也许可以尝试不设置。
-
我必须按 Ctrl + C 才能获取视频。环境变量是因为我在 X 之外运行,直接渲染到帧缓冲区。我会删除它,看看它是怎么做的。
-
这与 HDMI 一起工作!今晚我会用复合输出试一试。
-
没有运气的复合,同样的行为。我修改了 config.txt 以强制复合,但这是同样的问题。
-
我没有 Raspberry Pi,所以这只是一个疯狂的猜测......但你有没有试过在
display.flip()之后在keyLoop循环之前抽一次 Pygame 事件队列?跨度>
标签: python pygame raspberry-pi