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

Pygame选择菜单循环异常:重复刷新且不响应鼠标

修复Pygame Selection菜单无响应及循环刷屏问题

你的selection菜单出现异常的核心原因是缺少Pygame事件处理逻辑,同时帧率控制位置错误,导致程序无法响应鼠标操作,还会疯狂执行循环打印日志。

问题拆解

  1. 无事件处理循环:Pygame程序必须在主循环中处理事件队列(比如鼠标点击、窗口关闭),否则操作系统会判定程序无响应,按钮也无法检测到鼠标输入。你的selection()函数完全没有处理pygame.event的代码,这是最关键的问题。
  2. 帧率控制位置错误:clock.tick(1)被放在了while循环外面,这只会限制一次帧率,循环内部没有帧率控制,导致循环以CPU最大速度执行,所以控制台会疯狂打印"disspam"。
  3. 额外小细节:menu里的按钮跳转参数是'selction'(拼写少了一个e),虽然你说menu能正常运行,但建议统一改成'selection'避免后续潜在问题。

修复后的代码

把selection()函数修改为以下内容,添加事件处理和正确的帧率控制:

def selection():
    global selectionLoop
    selectionLoop = True
    while selectionLoop:
        # 核心:添加事件处理循环,必须保留这部分!
        for event in pygame.event.get():
            # 处理窗口关闭事件
            if event.type == pygame.QUIT:
                selectionLoop = False
                pygame.quit()
                exit()
            # 如果你的button函数依赖事件触发,也可以在这里处理MOUSEBUTTONDOWN等事件
        
        print("disspam")
        window.blit(backgroundgame, (0,0))
        text.title('CHOOSE A SUBJECT!')
        button(550, 500, 250, 100, rollover_menucolours, menucolours, 'MUSIC', 'music', black, smallText)
        button(900, 500, 250, 100, rollover_menucolours, menucolours, 'ART', 'art', black, smallText)
        button(1250, 500, 250, 100, rollover_menucolours, menucolours, 'DRAMA', 'drama', black, smallText)
        
        pygame.display.update()
        # 将帧率控制移到循环内部,限制每秒执行次数(可根据需求调整数值,比如30)
        clock.tick(1)

关键修改说明

  • 事件处理循环:for event in pygame.event.get()遍历所有待处理事件,这是Pygame程序响应输入的基础。至少要处理QUIT事件,否则窗口无法正常关闭;如果你的button()函数需要检测鼠标点击/悬停,它内部也需要访问事件队列或当前鼠标状态,而事件队列必须定期通过pygame.event.get()清空。
  • 帧率控制移到循环内:clock.tick(1)放在循环末尾,确保每次循环执行后等待足够时间,限制循环执行速度,减少CPU占用和日志刷屏。
  • 全局循环变量:保留selectionLoop用于控制循环退出,确保切换到其他菜单时能正常退出当前循环。

另外建议检查button()函数的实现,确保它能正确获取鼠标位置(pygame.mouse.get_pos())和鼠标点击状态(pygame.mouse.get_pressed()或MOUSEBUTTONDOWN事件),这样按钮才能响应你的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 17:02:53