turtle如何自定义画笔形状

turtle内置的画笔形状一共只有这么几种:

1
"arrow", "turtle", "circle", "square", "triangle", "classic"

那么总有一些时候,我们希望画笔的形状是可以自定义的,比如导入一张png图片作为shape。

内置形状

我们可以循环的创建一下画笔,每个画笔一个形状,一排摆开。

1
2
3
4
5
6
7
8
9
import turtle

shps = ["arrow", "turtle", "circle", "square", "triangle", "classic"]

for s in range(len(shps)):
t = turtle.Turtle()
t.pu()
t.goto(100 * s -300, 0)
t.shape(shps[s])

画出来以后,原来它们是这个样子:

其中turtleclassic是最常用的两个形状了,一个是默认的小箭头,另一个是萌萌的小海龟~

自定义形状

用turtle绘制

当我查看turtle的官方文档,有一个神秘的链接出现在shape的附近。

点击一下,文档会滚动到下边的位置,哦原来是「设置与特殊方法」。

官方文档的描述是如此的繁琐,再加上一层机器翻译,更难理解了(字我都认识,放在一起怎么就晕了呢?)。

简单来说,我们可以注册一个画笔,注册后就可以对它进行一个使用。

这里的例子,就解释了内置形状的triangle的由来,它是如何注册的。

那么我们可以注册一个新的三角形:

1
2
3
4
5
6
7
8
9
10
11
12
import turtle as t

screen = t.Screen()

# 注册一个新的形状,叫做 triangle222 ,三点相连形成
screen.register_shape("triangle222", ((10,-6), (0,50), (-10,-6)))

# 设置画笔形状为 triangle222
t.shape("triangle222")

# 走两步试试~
t.fd(100)

看看效果吧:

还不错哦,有了这个方法我们可以自己画一个画笔的形状了!

导入图片作为画笔形状

这才是本文的重点啊!

我们可以直接注册一个gif来作为画笔的形状,这里我推荐一个免费的图标库iconfont,因为画笔最好还是小一些比较好,所以一个好看的图标正合适。我们下载一个小汽车图片。

啊,有点大了,用工具将它改的小一些,并将后缀名改为gif。和上边的步骤一样,将这个文件注册为一个shape

1
2
3
4
5
6
7
8
9
10
11
12
import turtle as t

screen = t.Screen()

# 注册一个新的形状,直接导入图片
screen.register_shape("小汽车.gif")

# 设置画笔形状为 小汽车.gif
t.shape("小汽车.gif")

# 走两步试试~
t.fd(200)

看看效果吧:

简直完美!

这样我们就可以自己选择喜欢的图片来作为画笔形状了。

参考文献:python学习turtle(更改海龟图标)