You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派上能否不启用视频系统仅用Pygame读取游戏手柄输入?

问题:树莓派命令行运行Pygame读取手柄报错pygame.error: video system not initialized

Pygame无视频输出配置方案

可以通过设置SDL环境变量让Pygame在无视频输出的环境下运行,无需创建显示窗口。修改代码如下:

import os
import pygame

# 设置SDL使用dummy视频驱动,跳过视频系统初始化
os.environ["SDL_VIDEODRIVER"] = "dummy"

pygame.init()
joystick = pygame.joystick.Joystick(0)
joystick.init()

done = False
while not done:
    event = pygame.event.poll()
    if event.type == pygame.JOYAXISMOTION:  # 建议用内置常量代替硬编码数字1538,提升可读性
        print(event.dict['value'])
    if event.type == pygame.QUIT:  # 用内置常量代替硬编码数字1540
        done = True

说明:

  • SDL_VIDEODRIVER=dummy会让Pygame仅加载输入处理所需模块,跳过真实视频系统初始化
  • 使用Pygame内置事件常量替代魔数,能让代码更易维护且适配不同平台

替代方案:使用inputs模块

如果Pygame的配置仍有问题,可使用inputs模块——它专门用于读取输入设备,不依赖视频系统,在树莓派Zero上运行稳定。示例代码:

from inputs import get_gamepad

done = False
while not done:
    events = get_gamepad()
    for event in events:
        print(event.code)
        print(event.state)
        print(event.ev_type)

注意:不同手柄设备的输出值(按键编码、状态值等)可能存在差异,需根据实际运行结果适配调整。

内容的提问来源于stack exchange,提问作者user23628710

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:22:13