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

如何修复Pygame中的TypeError: argument 1 must be pygame.surface.Surface, not tuple错误

Pygame文本绘制类型错误解决思路
  • 错误原因:pygame.freetype.SysFont的render方法返回的是**(Surface, Rect)**元组,而screen.blit()的第一个参数要求是单独的pygame.surface.Surface对象,直接传递元组就会触发TypeError。
  • 修复方案:
    1. 解构返回的元组,只提取Surface对象:
      ammo_text, _ = font.render(f'Hello World', (0, 0, 100))
      screen.blit(ammo_text, (40, 250))
      
    2. 改用render_to方法直接将文本绘制到屏幕,无需单独处理Surface:
      font.render_to(screen, (40, 250), f'Hello World', (0, 0, 100))
      
  • 额外优化:你的代码中将screen.fill()放在了事件循环内部,这会导致只有触发事件时才会刷新背景,建议将其移到事件循环外部,确保每次主循环都能更新背景:
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        # 移至事件循环外,保证每次循环都填充背景
        screen.fill((250, 250, 0))
        # 文本绘制代码放在此处
        pygame.display.flip()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:22:37