turtle库概述
turtle是标准库,诞生于1969
turtle库是python的基础绘图库
通常,应避免导入模块中所有的名称,但使用海龟绘图,这样做会很方便。
from turtle import*
对象
.setup(width,height,startx,starty) —— 省略startx,starty则窗口位于屏幕中央(turtle坐标系的原点默认在窗体正中间)
.title(str) —— 设置绘图名称
.penup() —— 简写.pu() 将画笔抬起
.pendown() —— 简写.pd() 将画笔落下
.forward(d) —— 简写.fd(d),当d为负数时向反方向前进
.backward(d) —— 简写.bk() 向后前进
.goto(x,y) —— 移动到坐标为(x,y)处 #绝对坐标
.pensize(width) —— 别名 .width(width) 画笔粗细
.pencolor(“color”) 或 .pencolor(r,g,b) —— 参数为字符串或RGB数值
.speed(k) —— 画笔绘制速度,当值k = 0时,海龟将以最快速度移动。
.setheading(angle) —— 简写 .seth(angle) #angle为绝对角度
.left(angle) —— 逆时针旋转angle°
.right(angle) —— 顺时针旋转angle°
.circle(r[, angle][, steps]) —— #绕左侧圆心旋转,r可为负数,则绕右侧圆心旋转;
- angle为圆心角,省略angle则绘制整个图形(若指定了steps,则不一定是圆);
- 在绘制正多边形时,使用steps指定图形边数;
.color(color1, color2) —— color1为画笔颜色,color2为填充色
.fillcolor(“color”) —— 设置填充颜色
.begin_fill() —— 准备开始填充
.end_fill() —— 填充结束
.hideturtle()
.showturtle()
.done() —— 文件式,停止画笔绘制,程序运行结束后绘图窗口不会退出,需手动关闭
- RGB色彩模式
三个通道:红、蓝、绿
覆盖视力所感知的所有颜色
RGB所有色彩的取值范围0~255整数 或 0~1小数
默认采用小数值模式,可切换为整数值模式。
turtle.colormode(mode)
mode: 1.0——RGB小数值模式;255——RGB整数值模式
另注:库的调用技巧
![](https://i-blog.csdnimg.cn/blog_migrate/4b4dd9d2d6c259ac6400a570df19cbbe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/95d61d1792ace604e58d005624c56421.png)
一些实例
- 五角星实例:
from turtle import*
color('red','red')
begin_fill()
for i in range(5):
fd(200)
rt(144)
end_fill()
done()
输出:
- 太阳花实例:
import turtle
turtle.color("red","yellow")
turtle.begin_fill()
for i in range(36):
turtle.fd(200)
turtle.left(170)
turtle.end_fill()
输出:
- 爱心实例:
import turtle as t
t.penup()
t.seth(-90)
t.fd(160)
t.pendown()
t.pensize(20)
t.colormode(255)
t.speed(5)
for j in range(10):
t.speed(1000)
t.pencolor(25*j,5*j,15*j)
t.seth(130)
t.fd(220)
for i in range(23):
t.circle(-80,10)
t.seth(100)
for i in range(23):
t.circle(-80,10)
t.fd(220)
t.hideturtle()
输出:
- 科赫雪花实例:
import turtle
def koch(size,n):
if n == 0:
turtle.fd(size)
else:
for angle in [0,60,-120,60]:
turtle.left(angle)
koch(size/3,n-1)
def main():
turtle.setup(600,600)
turtle.penup()
turtle.speed(0)
turtle.goto(-200,100)
turtle.pencolor("blue")
turtle.pendown()
turtle.pensize(2)
level = 3 # 3阶科赫雪花
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.right(120)
koch(400,level)
turtle.hideturtle()
main()
输出:
- 自动绘制轨迹实例:
import turtle as t
t.title('自动轨迹绘制')
t.setup(800, 600)
t.pencolor("red")
t.pensize(5)
t.speed(8)
#数据读取
datals = []
f = open("data.txt")
for line in f:
line = line.replace("\n","")
datals.append(list(map(eval, line.split(","))))
f.close()
#自动绘制
for i in range(len(datals)):
t.pencolor(datals[i][3],datals[i][4],datals[i][5])
t.fd(datals[i][0])
if datals[i][1]:
t.rt(datals[i][2])
else:
t.lt(datals[i][2])
t.hideturtle()
data.txt:
输出:
实例扩展(数码管显示日期)