# 一页纸 Turtle 手册
还在完善中...
Python 的 Turtle 库, 更详细的说明见官方文档 (opens new window)
# 意识
- 我们可以想象有一只带着颜料桶的海龟, 它走过的旅途就变成了一幅画
# 基本程序结构
# 导入turtle库
import turtle
# 设置笔的状态
p = turtle.Pen()
p.pensize(3)
p.pencolor('gold')
# 笔进行移动
p.forward(100)
# 停止程序, 但绘图窗体不自动关闭. 如果没有它, 绘图窗口在程序运行结束后会自动关闭
turtle.done()
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 导入turtle库
import turtle as t
# 设置笔的状态
t.pensize(3)
t.pencolor('gold')
# 笔进行移动
t.forward(100)
# 停止程序, 但绘图窗体不自动关闭. 如果没有它, 绘图窗口在程序运行结束后会自动关闭
t.done()
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
from turtle import * # 直接将turtle库的所有函数都导入, 那么之后就不需要声明对象, 而是可以直接调用库里面的函数
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 通常, 我们还会载入 time 模块, 来控制海龟画笔的运动速度
import turtle
import time
1
2
2
# 设置画布
# 坐标系
# 设置画布大小
- 海龟的活动范围, 就是画布大小
# 设置背景颜色
turtle.bgcolor('gray')
1
# 清理画布
# 设置笔的状态
# 创建笔
import turtle
t = turtle.Pen()
# 也可以这样:
import turtle as t
1
2
3
4
5
2
3
4
5
# 抬笔
penup()
pu()
up()
1
2
3
2
3
# 落笔
pendown()
pd()
down()
1
2
3
2
3
# 判断画笔是否落下
isdown()
1
# 设置笔的粗细
pensize()
width()
# 注意,没有size()
1
2
3
2
3
# 设置笔的颜色
# 参数可以是英文单词、RGB 颜色、十六进制颜色
pencolor('red')
pencolor()
pencolor()
1
2
3
4
2
3
4
# 设置填充颜色
fillcolor()
1
# 同时设置笔的颜色和填充颜色
color(笔的颜色, 填充颜色)
1
# 判断是否填充
filling()
1
# 填充颜色
- 想要填充颜色, 海龟的轨迹必须在
begin_fill()
和end_fill()
之间
# 注意, 在填充之前, 要使用 fillcolor() 设定填充颜色
begin_fill()
end_fill()
1
2
3
4
2
3
4
# 设置笔的速度
speed() # 可以设置的范围在 0-10 之间
1
# 基本绘图命令
# 前进
forward()
fd()
1
2
2
# 后退
backward()
bk()
back()
1
2
3
2
3
# 右转 / 顺时针旋转
right()
rt()
1
2
2
# 左转 / 逆时针旋转
left()
lt()
1
2
2
# 设置朝向
setheading()
seth()
1
2
2
# 画圆
circle()
1
# 画点
dot()
dot(100) #绘制直径为100的点, 可以认为是实心圆
1
2
2
# 画椭圆
# 设置角度
degrees()
1
# 设置弧度
radians()
1
# 进阶绘图命令
# 印章
stamp()
1
# 清除印章
clearstamp()
1
# 清除多个印章
clearstamps()
1
# 克隆
clone()
1
# 重置
reset()
1
# 清空
clear()
1
# 书写
write()
1
# 坐标命令
# 移动到指定坐标
goto()
1
# 连线
1
# 设置 x 坐标
setx()
1
# 设置 y 坐标
sety()
1
# 获取角度
# 设置角度
# 返回原点
home()
1
# 获取笔的属性
# 获取位置
position()
pos()
1
2
2
# 获取方向
towards()
1
# 获取 x 坐标
xcor()
1
# 获取 y 坐标
ycor() #表示y + coordinate
1
# 获取朝向
heading()
1
# 获取距离
distance()
1
# 海龟状态命令
# 设置海龟外形
![[Pasted image 20221203151703.png]]
- 海龟一共有 7 种外形:
- 箭头 / arrow
- 空白 / blank
- 圆形 / circle
- 经典 / classic
- 正方形 / square
- 三角形 / triangle
- 海龟 / turtle
shape(name='turtle') #设置为海龟外形
1
# 显示海龟
showturtle()
st()
1
2
2
# 隐藏海龟
hideturtle()
ht()
1
2
2
# 是否可见
isvisible()
1
# 等待
# 暂停
# 撤销操作
undo()
1
# 输入 & 输出
# 文本输入
textinput()
1
# 数字输入
numinput()
1
# 输出
# 监听
listen()
1
# 当鼠标点击
onclick()
1
# 当鼠标释放
onrelease()
1
# 当鼠标拖动
ondrag()
1
# 当键盘按下
onkeypress()
1
# 当键盘按下并释放
onkey()
onkeyrelease()
1
2
2
# 当点击屏幕
onclick()
onscreenclick()
1
2
2
# 数学函数
# 随机函数
import random #导入 random 库
random.randint(开始值, 结束值) //从开始值到结束值之间的整数中, 随机选择一个
random.choice(非空序列) //从非空序列中, 随机选择一个
1
2
3
4
5
6
2
3
4
5
6
# 动画
# 延迟
delay()
1
# 追踪
tracer()
1
# 更新
update()
1
# 当达到定时
ontimer()
1
# 主循环
mainloop()
done()
1
2
2
# 其他
# 保存为 svg 矢量图格式
首先安装 svg_turtle 库: pip install svg_turtle
from svg_turtle import SvgTurtle
t = SvgTurtle(500, 500) #指定图片大小
t.forward(200) #画一条线
t.dot(10) #画一个点, 或者认为是实心圆
t.save_as('/Users/crafter/Desktop/hello.svg') #需要指定保存文件的绝对路径
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8