turtle库是python中的标准库工具,因此不需要pip安装,它拥有很强大的功能,可以绘制出各色各样的图案。
turtle的使用:
- 窗体布局;
- 坐标系:分为空间坐标和角度坐标;
- 画笔控制;
- 运动控制;
- 方向控制;
窗体布局:
turtle.setup(width,height,startx,starty) | 宽、高、窗口左上角距离屏幕左边的距离,距离屏幕上面的距离,startx,starty可以不写,默认相对于屏幕居中 |
turtle.setup(888,666)
空间坐标系: 分为绝对坐标系和海龟坐标系,
绝对坐标 | 原点、x轴、y轴,与直角坐标系相似 |
turtle.goto(x,y) | 到达绝对坐标系中的指定位置 |
海龟坐标 | 以海龟头部方向为准,海龟默认水平向右 |
turtle.fd(d) | 向前,全称为turtle.forward(d) |
turtle.bk(d) | 向后,全称为turtle.background(d) |
turtle.circle(r,angle) | 半径、弧度 |
绝对坐标:
import turtle as t # turtle单词太长了,给turtle起个别名t
# 在使用goto之前海龟默认在绝对坐标系的原点
t.write("原点(0,0)")
t.goto(100,100) # 在第一象限
t.write("第一象限(100,100)")
t.goto(100,-100) # 在第四象限
t.write("第四象限(100,-100)")
t.goto(-100,100) # 在第二象限
t.write("第二象限(-100,100)")
t.goto(-100,-100) # 在第三象限
t.write("第三象限(-100,-100)")
t.done() # 控制程序不自动关闭,点击窗口关闭按钮才关闭
海龟坐标:
import turtle as t
t.fd(100) # 前进100px
t.circle(50,90) # 半径50,弧度90,四分之一圆
t.bk(200) # 后退200px,头的方向不变,保持circle的方向
t.done()
角度坐标系:分为绝对角度和空间角度
绝对角度 | 逆时针:0-360,顺时针0-负360 |
turtle.seth(angle) | 改变海龟行进方向,angle为绝对度数,seth()只改变方向但不前进 |
海龟角度 | 海龟默认水平向右 |
turtle.left(angle) | 海龟向左转angle角度,angle为数字 |
turtle.right(angle) | 海龟向右转angle角度,angle为数字 |
画笔控制:
turtle.penup() | 抬起画笔,不会再屏幕上绘制图案,可以缩写为turtle.pu() |
turtle.pendown() | 落下画笔,可以在屏幕上绘制图案,可以缩写为turtle.pd() |
turtle.pensize() | 设置画笔宽度,别名turtle.width(width) |
turtle.pencolor(color) | 设置画笔颜色,可以是像pink一样的字符串,可以是rgb颜色 |
运动控制:
turtle.fd(d) | 向前,全称为turtle.forward(d),d为负数取反方向 |
turtle.bk(d) | 向后,全称为turtle.background(d),d为负数取反方向 |
turtle.circle(r,extent=None) | 根据半径r绘制extent角度的弧形, r:默认圆心在海龟左侧r距离的位置;’extent:绘制角度,默认是360度的整圆 |
方向控制:
turtle.setheading(angle) | 改变行进的角度方向,别名turtle.seth(angle) |
turtle.left(angle) | 海龟向左转angle角度,只改变方向,不改变距离 |
turtle.right(angle) | 海龟向右转angle角度,只改变方向,不改变距离 |
turtle的简单实例:
- 画个圆;
import turtle as t
t.circle(50) # 半径50,第二个参数不写,默认画个圆
t.done()
- 画个粉色的正方形
import turtle as t
t.color("pink") # 设置画笔为粉色
t.fd(100)
t.seth(-90) # 根据海龟角度坐标系,设置角度
t.fd(100)
t.seth(-180)
t.fd(100)
t.seth(-270)
t.fd(100)
t.done()
- 画一个爱心
import turtle as t
# 画爱心思路,将爱心分成两条直线,两个半圆
# 从爱心底部开始画
# 初始化画笔
t.color("pink")
t.begin_fill() # 填充颜色,将爱心填满
t.left(140) # 左转140度
t.forward(114) # 向前走,画出爱心左侧的直线
# 画小半个圆
t.speed(8)
for i in range(200):
t.right(1)
t.forward(1)
# 一半的圆已经画好了,下面画另一半
# 画小半个圆
t.left(122)
for i in range(200):
t.right(1)
t.forward(1)
# 画直线
t.forward(114)
t.end_fill() # 填充颜色,将爱心填满,和begin配对使用
# 把画笔远离爱心
t.left(38)
t.pu()
t.forward(100)
t.done()