Turtle库也叫海龟库, 是Python重要的标准库之一, 能够进行基本的图形绘制。Turtle库在绘制图形时的基本框架: 一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),前进方向为水平右方。
Turtle库的基本函数
turtle.setup(a,b,c,d) |
|
turtle.fd(x) | 顺着画笔当前方向前进x(正负) |
turtle.bk(x) | 画笔移动到(a,b),当前方向不变 |
turtle.goto(a,b) | 画笔移动到(a,b),当前方向不变 |
turtle.circle(r,angle) | 画笔以r为半径,逆时针旋转angle(正负)度 |
turtle.setth(angle)(绝对角度) | 改变当前画笔的方向,但不行进 |
turtle.left(angle)(海龟角度) | 当前画笔方向左转angle度 |
turtle.right(angle)(海龟角度) | 当前画笔方向右转angle度 |
turtle.colormode(mode) | 1.0RGB小数模式(一般); 255RGB整数值模式 |
turtle.penup() | 画笔抬起 |
turtle.pendown() | 画笔放下 |
turtle.pensize(a) | 设置画笔大小为a像素 |
turtle.pencolor(“red”) | 设置画笔颜色为红色( 其他 ) |
turtle.begin_fill() | 准备开始填充图形 |
turtle.end_fill() | 填充完成 |
turtle.fillcolor(颜色字符串) | 绘制图形的填充颜色 |
turtle.hideturtle() | 隐藏箭头显示 |
turtle.showturtle() | 显示箭头 |
turtle.done() | 画图结束 |
画笔颜色可以用多种形式表示:
颜色字符串:turtle.pencolor("purple")
RGB的小数值:turtle.pencolor(0.63, 0.13, 0.94)
RGB的整数值:turtle.pencolor(160, 32, 240)
RGB的元组值:turtle.pencolor((0.63, 0.13, 0.94))
常用RGB颜色
中文名称 | 字符串 | RGB整数值 | RGB小数值 |
白色 | white | 255, 255, 255 | 1, 1, 1 |
黄色 | yellow | 255, 255, 0 | 1, 1, 0 |
洋红 | magenta | 255, 0, 255 | 1, 0, 1 |
青色 | cyan | 0, 255, 255 | 0, 1, 1 |
蓝色 | blue | 0, 0, 255 | 0, 0, 1 |
黑色 | black | 0, 0, 1 | 0, 0, 0 |
海贝色 | seashell | 255, 245, 238 | 1, 0.96, 0.93 |
金色 | gold | 255, 215, 0 | 1, 0.84, 0 |
粉红色 | pink | 255, 192, 203 | 1, 0.75, 0.80 |
棕色 | brown | 165, 42, 42 | 0.65, 0.16, 0.16 |
紫色 | purple | 160, 32, 240 | 0.63, 0.13, 0.94 |
番茄色 | tomato | 255, 99, 71 | 1, 0.39, 0.28 |
绘图实例
等边叠加三角形
1 import turtle as t 2 3 def drawTriangle(angle, long): 4 for i in range(3): 5 t.fd(long) 6 t.left(angle) 7 8 if __name__ == "__main__": 9 t.pensize(3) 10 t.seth(-120) 11 drawTriangle(120, 100) 12 for i in range(2): 13 t.fd(200) 14 t.left(120) 15 t.fd(100) 16 t.left(120) 17 t.fd(100) 18 t.right(120) 19 t.fd(100) 20 t.hideturtle() 21 t.done()
六角形
import turtle as t def drawSixangle(angle, long): for i in range(5): t.fd(long) t.right(angle) def drawTriangle(angle1, angle2, long): for i in range(6): t.fd(long) t.right(angle1) t.fd(long) t.left(angle2) if __name__ == "__main__": t.pensize(2) t.seth(30) drawSixangle(60, 100) t.fd(100) drawTriangle(120, 60, 100) t.done()
五角星
1 import turtle as t 2 3 def main(long, angle): 4 for i in range(5): 5 t.fd(long) 6 t.right(angle) 7 8 if __name__ == "__main__": 9 t.begin_fill() 10 t.fillcolor('red') 11 t.pensize(1) 12 main(100, 144) 13 t.end_fill() 14 t.hideturtle() 15 t.done()
圣诞树
1 n = 50 2 from turtle import * 3 speed("fastest") 4 left(90) 5 fd(3*n) 6 pencolor("dark green") 7 bk(n*4.8) 8 def tree(d, s): 9 if d <= 0: 10 return 11 fd(s) 12 tree(d-1, s*.8) 13 right(120) 14 tree(d-3, s*.5) 15 right(120) 16 tree(d-3, s*.5) 17 right(120) 18 bk(s) 19 tree(15, n) 20 bk(n/2) 21 done()