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

Python Turtle自定义形状无法使用,报AttributeError错误求助

解决Python Turtle自定义形状的AttributeError问题

嘿,我来帮你搞定这个报错!你遇到的AttributeError: 'str' object has no attribute '_type',是因为register_shape()的参数用法搞错啦。当你想用自定义名字注册图片形状时,不能直接把图片路径作为第二个字符串参数传进去——这个方法的第二个参数需要的是一个turtle.Shape对象,而不是单纯的路径字符串。

给你两种可行的解决方案:

方案1:直接用图片路径作为形状名(最简单)

这种方式不需要自定义名字,直接注册图片文件,然后用文件名来设置形状:

import turtle
screen = turtle.Screen()
# 直接注册图片,形状名就是文件名
screen.register_shape('car.gif')
t = turtle.Turtle()
# 使用图片文件名作为形状
t.shape('car.gif')
screen.mainloop()  # 记得加这个让窗口保持打开,不然会一闪而过

方案2:自定义形状名(需创建Shape对象)

如果你确实想给这个形状起个简短的名字比如'car',那得先创建一个Shape实例,把图片路径传入后再注册:

import turtle
screen = turtle.Screen()
# 创建GIF类型的Shape对象,传入图片路径
car_shape = turtle.Shape("gif", "car.gif")
# 用自定义名字注册这个Shape对象
screen.register_shape('car', car_shape)
t = turtle.Turtle()
# 使用自定义的形状名
t.shape('car')
screen.mainloop()

额外注意事项:

  • 确保car.gif和你的Python脚本在同一个文件夹里,如果不在,就传入完整的绝对路径(比如"C:/my_projects/car.gif")
  • 确认图片是真正的GIF格式,有些改了后缀的图片可能不生效,可以用画图工具重新导出为GIF试试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:12:34