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

Pygame方向键触发动画时报错TypeError:参数需为Surface而非str

Pygame方向键触发动画报错解决方法

报错原因

你遇到的TypeError: argument 1 must be pygame.surface.Surface, not str错误,根源是精灵列表里混入了字符串路径,而非Pygame Surface对象。

看你定义的walk_left代码:

walk_left = [pygame.image.load('art/Knight/move/KnightL1.png'), ('art/Knight/move/KnightL2.png'), ('art/Knight/move/KnightL3.png'), ('art/Knight/move/KnightL4.png')]

只有第一个元素用pygame.image.load()加载成了Surface,后面三个都是纯文件路径字符串。当walkcount//3取到1、2、3索引时,win.blit()拿到的是字符串,自然不符合参数要求。同理walk_right大概率也存在同样的问题。

修复步骤

  1. 修正精灵列表定义:给每个图片路径都加上pygame.image.load()包裹,确保所有元素都是Surface对象:
walk_left = [
    pygame.image.load('art/Knight/move/KnightL1.png'),
    pygame.image.load('art/Knight/move/KnightL2.png'),
    pygame.image.load('art/Knight/move/KnightL3.png'),
    pygame.image.load('art/Knight/move/KnightL4.png')
]
  1. 检查walk_right:用同样的方式修正walk_right的定义,避免遗漏。
  2. 额外小问题修复:你的redraw_game_window()函数最后一行pygame.display.update少了括号,改成pygame.display.update()才能正常刷新窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:32:36