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

运行显示问题并接收用户输入的函数时pygame为何崩溃?

错误原因排查

  • 未调用显示更新接口:修改screen画布内容后没有执行pg.display.update()(或pg.display.flip()),所有绘制操作仅存在于缓存中,窗口会一直显示黑屏
  • 死循环无法退出:键盘事件判断中使用的break只会跳出当前遍历事件的for循环,无法跳出外层的while 1死循环,程序长时间卡顿会被系统判定为无响应崩溃
  • Pygame的font.render原生不支持\n换行符:代码中写的换行符不会被识别渲染,整段文字会显示为单行,后半段可能超出渲染范围不可见
  • 未处理窗口关闭事件:没有监听QUIT类型事件,用户点击窗口关闭按钮时程序会直接无响应崩溃

修复后代码

def pick_board():
    global bo, bo1, bo2
    while True:
        # 拆分两行渲染文本,解决不支持换行的问题
        question_line1 = font.render('你想要解哪一个数独盘?', True, pg.Color('black'))
        question_line2 = font.render('输入1或2选择:', True, pg.Color('black'))
        screen.fill('white')
        screen.blit(question_line1, (20, 20))
        screen.blit(question_line2, (20, 60)) # 第二行向下偏移避免文字重叠
        # 新增画布更新操作
        pg.display.update()
        
        for event in pg.event.get():
            # 新增窗口关闭事件处理逻辑
            if event.type == pg.QUIT:
                pg.quit()
                exit()
            if event.type == pg.KEYDOWN:
                if event.key == pg.K_1:
                    bo = bo1
                    # 直接return跳出整个函数,替代break跳出循环
                    return
                if event.key == pg.K_2:
                    bo = bo2
                    return

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:21:00