如何修复Pygame中的TypeError: argument 1 must be pygame.surface.Surface, not tuple错误
Pygame文本绘制类型错误解决思路
- 错误原因:
pygame.freetype.SysFont的render方法返回的是**(Surface, Rect)**元组,而screen.blit()的第一个参数要求是单独的pygame.surface.Surface对象,直接传递元组就会触发TypeError。 - 修复方案:
- 解构返回的元组,只提取Surface对象:
ammo_text, _ = font.render(f'Hello World', (0, 0, 100)) screen.blit(ammo_text, (40, 250)) - 改用
render_to方法直接将文本绘制到屏幕,无需单独处理Surface:font.render_to(screen, (40, 250), f'Hello World', (0, 0, 100))
- 解构返回的元组,只提取Surface对象:
- 额外优化:你的代码中将
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
相关产品推荐
相关产品推荐

