Python 的 Turtle 库, 更详细的说明见官方文档
意识
我们可以想象有一只海龟, 尾巴上挂着颜料桶, 所以, 它走过的旅途就变成了一幅画
基本框架
坐标系
基本程序框架
# 导入turtle库
import turtle
# 设置笔的状态
p = turtle.Pen()
p.pensize(3)
p.pencolor('gold')
# 笔进行移动
p.forward(100)
# 停止程序, 但绘图窗体不自动关闭. 如果没有它, 绘图窗口在程序运行结束后会自动关闭
turtle.done()
# 导入turtle库
import turtle as t
# 设置笔的状态
t.pensize(3)
t.pencolor('gold')
# 笔进行移动
t.forward(100)
# 停止程序, 但绘图窗体不自动关闭. 如果没有它, 绘图窗口在程序运行结束后会自动关闭
t.done()
from turtle import * # 直接将turtle库的所有函数都导入, 那么之后就不需要声明对象, 而是可以直接调用库里面的函数
color('red', 'yellow')
begin_fill()
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
end_fill()
done()
通常, 我们还会载入 time 模块, 来控制海龟画笔的运动速度:
import turtle
import time
设置画布
设置画布大小 & 窗口大小
turtle.setup(800, 600) #设置窗口大小
turtle.screensize(800, 600, 'white') #设置画布大小和背景颜色
很多人发现设置画布大小后, 窗口没有变化, 那是因为混淆了”画布”和”窗口”的概念. 注意, 画布 ≠ 窗口! 窗口是程序的尺寸, 是我们最直接能看到的, 而画布大小则是海龟的活动范围.
那么, 如果画布 > 窗口, 那么窗口就会出现滚动条 但是, 如果画布 < 窗口, 则画布会铺满窗口!!!
设置背景颜色
# 除了使用 screensize 设置背景颜色之外:
turtle.bgcolor('gray')
清理画布
clear()
clearscreen()
设置笔的状态
创建笔
import turtle
t = turtle.Pen()
# 也可以这样:
import turtle as t
设置笔的速度
speed() # 可以设置的范围在 0-10 之间
- 取值范围是 0 - 10
- 0: 最快
- 我们可以理解为 0 表示没有动画效果, 比如 forward 命令, 是直接从这个点跳跃到那个点, 而不是有走过去的动画
- 10: 快
- 6: 正常速度
- 3: 慢
- 1: 最慢
- 注意
- 如果输入数值大于 10 或者小于 0.5, 则速度自动调整为 0, 也就最快的速度
抬笔
up()
penup()
落笔
down()
pendown()
判断画笔是否落下
isdown()
设置笔的粗细
pensize()
width()
# 注意,没有size()
设置笔的颜色
# 参数可以是英文单词、RGB颜色、十六进制颜色
pencolor('red')
pencolor('#ff0000')
colormode(255)
pencolor(255, 0, 0)#使用 RGB颜色之前, 需要执行 colormode(255) 来开启RGB模式
颜色填充
想要填充颜色, 海龟的轨迹必须在 begin_fill() 和 end_fill() 之间
fillcolor() #设定填充颜色
begin_fill() #开始填充
# 代码
end_fill() #结束填充
判断是否填充
filling()
同时设置笔的颜色和填充颜色
color(笔的颜色, 填充颜色)
基本绘图命令
前进
forward()
fd()
后退
backward()
bk()
back()
右转 / 顺时针旋转
right()
rt()
左转 / 逆时针旋转
left()
lt()
设置朝向
setheading()
画圆
circle()
画点
画点, 也可以认为是画实心圆.
dot()
dot(100, 'blue') #绘制半径为100、蓝色的圆点, 也就是实心圆
设置角度
degrees()
设置弧度
radians()
进阶绘图命令
印章
stamp()
清除印章
clearstamp()
清除多个印章
clearstamps()
克隆
clone()
重置
reset()
清空
clear()
clearscreen()
书写
write()
坐标命令
移动到指定坐标
goto()
默认会连线
设置 x 坐标
setx()
设置 y 坐标
sety()
获取角度
设置角度
返回原点
home()
获取笔的属性
获取位置
position()
pos()
获取方向
towards()
获取 x 坐标
xcor()
获取 y 坐标
ycor() #表示y + coordinate
获取朝向
heading()
获取距离
distance()
海龟状态命令
设置海龟外形
- 海龟一共有 7 种外形:
time.sleep(秒数)
##撤销操作
```python
undo()
输入 & 输出
文本输入
textinput()
数字输入
numinput()
监听
listen()
当鼠标点击
onclick()
当鼠标释放
onrelease()
当鼠标拖动
ondrag()
当键盘按下
onkeypress()
当键盘按下并释放
onkey()
onkeyrelease()
当点击屏幕
onclick()
onscreenclick()
数学函数
随机函数
import random #导入 random 库
random.randint(开始值, 结束值) //从开始值到结束值之间的整数中, 随机选择一个
random.choice(非空序列) //从非空序列中, 随机选择一个
动画
延迟
delay()
追踪
tracer()
更新
update()
当达到定时
ontimer()
主循环
mainloop()
done()
其他
保存为 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') #需要指定保存文件的绝对路径