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

Pygame调用pygame.display.update()后H键无法绘制帮助界面问题

问题根因

  • 按下H键绘制完帮助界面后没有调用pygame.display.update()刷新屏幕,绘制的内容只存在于显存不会显示到窗口上
  • 帮助界面绘制完成后没有驻留逻辑,mainMenu函数执行完后外层循环立刻重新调用mainMenu,主菜单内容直接覆盖了刚画好的帮助界面
  • 缺少帮助界面下按B返回主菜单的交互逻辑

修复方案

直接替换你原来的mainMenu函数为下面的代码即可:

def mainMenu():
    # 新增状态标记,判断当前是否在帮助页面
    in_help = False
    while True:
        screen.fill(bgcolor)
        if not in_help:
            # 显示主菜单
            menu = "[ (S) T A R T ]\n [ (H) E L P ]\n [ (Q) U I T ]\n jeg er best"
            drawMenu(menu, 140, 120, 80)
        else:
            # 显示帮助界面
            drawHelp(25, 70, 40)
        
        # 统一处理事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if not in_help:
                    # 主菜单下的按键逻辑
                    if event.key == pygame.K_q:
                        pygame.quit()
                        sys.exit()
                    elif event.key == pygame.K_s:
                        game()
                    elif event.key == pygame.K_h:
                        in_help = True
                else:
                    # 帮助界面下的按键逻辑
                    if event.key == pygame.K_b:
                        in_help = False
        
        # 每次绘制完统一刷新屏幕
        pygame.display.update()
        # 控制菜单界面帧率,避免占用过高CPU
        clock.tick(30)

另外你代码最末尾的外层循环可以简化,修改后的mainMenu已经自带了无限循环,把末尾的:

while True:
    mainMenu()

替换为:

mainMenu()

即可避免重复调用的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:39:00