python中海龟绘图之海龟印章
当想“印”一个可独立删除的静态图形,而不是画线或点,就适合用 stamp()。
1 stamp()的用法
stamp_id = turtle.stamp()在当前海龟位置将海龟形状的一个副本印在画布上,返回该印章的stamp_id。代码如图1所示。
图1 stamp()的用法
其中,第4行代码将海龟印章印在起点位置,其id为id1。代码运行的效果如图2所示。
图2 代码运行效果
从图2中可以看出,右侧为当前海龟,左侧是在起点的印章。
2 clearstamp()的用法
clearstamp()的用法如下所示。
turtle.clearstamp(stamp_id)clearstamp()的作用是删除参数stamp_id指定的海龟印章。代码如图3所示。
图3 clearstamp()的用法
其中,图3所示的代码是图1代码的基础上添加了第6行代码。第6行代码通过turtle.ontimer创建了一个定时器,当1000毫秒之后,调用lambda指定的匿名函数,该匿名函数的作用是删除id1指定的海龟印章,也就是起始位置处的印章。代码运行的效果如图4所示。
图4 代码运行效果
3 clearstamps()的用法
clearstamps()函数的作用是批量删除印章,其格式如下所示。
turtle.clearstamps(n=None)
如果 n 为 None,则删除所有印章;如果 n > 0,则删除前 n 个印章;如果 n < 0,则删除后 n 个印章。代码如图5所示。
图5 clearstamps()的用法
其中,第4-6行代码使用for循环创建了4个海龟印章。第8行代码创建定时器,在1000毫秒后调用clearstamps()删除所有印章。代码运行效果如图6所示。
图6 删除所有印章的效果
将图5中第8行代码的t.clearstamps()的参数设置为2,表示删除前两个海龟印章,代码运行效果如图7所示。
图7 删除前两个印章的效果
将图5中第8行代码的t.clearstamps()的参数设置为-2,表示删除后两个海龟印章,代码运行效果如图8所示。
图8 删除后两个印章的效果
4 小结
turtle库的stamp()函数可以将海龟印章打印到海龟当前位置处,该函数的返回值是印章的id。clearstamp()函数删除指定的印章。clearstamps()函数可以批量删除印章。stamp()、clearstamp()和clearstamps()一般用于需要留下标记但不画线、重复绘制相同图案、保留位置记录以便后期删除以及制作动画或临时高亮等场合。
