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

pygame.event.get()返回带异常结果的事件轮询问题排查

Pygame事件循环异常:调用pygame.mixer.Sound.play()后触发异常

经与活跃Pygame开发者确认,该异常是由Pygame近期版本更新引发的引擎内部问题,Stack Overflow相关提示线程均未覆盖此场景。

问题现象

使用pygame.mixer.Sound定义音频并调用play()(尤其是循环播放play(-1))后,事件循环中调用pygame.event.get()会抛出如下错误:

Error getting events: <built-in function get> returned a result with an exception set

音频可正常播放,但该异常会导致程序后续运行崩溃。

复现测试代码

import pygame

pygame.init()
pygame.mixer.init()

screen = pygame.display.set_mode((100, 100))

rain_sound = pygame.mixer.Sound("testSound.mp3")
rain_sound.play(-1)

def safe_event_get():
    try:
        return pygame.event.get()
    except Exception as e:
        print(f"Error getting events: {e}")
        return []

while True:
    for event in safe_event_get():
        pass

解决方案

  1. 降级到稳定版本
    卸载当前版本后,安装更新前的稳定版本(如2.5.2版本):

    pip uninstall pygame -y
    pip install pygame==2.5.2
    

    此方法可彻底解决版本更新带来的内部问题。

  2. 临时规避方案
    保留你实现的safe_event_get()异常捕获逻辑,在事件循环中始终通过该函数获取事件,避免异常直接导致程序崩溃。但这只是临时措施,建议优先采用版本降级方案从根源解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 22:12:35