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
解决方案
降级到稳定版本
卸载当前版本后,安装更新前的稳定版本(如2.5.2版本):pip uninstall pygame -y pip install pygame==2.5.2此方法可彻底解决版本更新带来的内部问题。
临时规避方案
保留你实现的safe_event_get()异常捕获逻辑,在事件循环中始终通过该函数获取事件,避免异常直接导致程序崩溃。但这只是临时措施,建议优先采用版本降级方案从根源解决问题。
内容的提问来源于stack exchange,提问作者David Bandel
相关产品推荐
相关产品推荐

