10.18 海龟绘图-turtle
一个通过turtle绘制长方形的简单代码:
from turtle import * #笔刷宽度:width width(4) #前进:forward/fd fd(200) #右转90°:right/rt rt(90) #设置画笔颜色 pencolor('red') fd(100) rt(90) pencolor('green') fd(200) rt(90) pencolor('blue') fd(100) rt(90) #调用done等待窗口被关闭,否则将会立刻关闭(或者会卡死) done()
fd(200):在当前方向上绘制长度为200像素的线
rt(90):右转90°
在命令行运行上述代码,会自动弹出一个绘图窗口,然后绘制出一个长方形:

从程序代码可以看出,海龟绘图就是指挥海龟前进、转向,海龟移动的轨迹就是绘制的线条。要绘制一个长方形,只需要让海龟前进、右转90°,重复4次。
绘图结束后,记得调用done()函数,让窗口进入消息循环,等待被关闭,否则,由于Python进程会立刻结束,将导致窗口被立刻关闭。
turtle包本身只是一个绘图库,但是配合Python代码,就可以绘制各种复杂的图形。例如,通过循环绘制5个五角星:
from turtle import * def draw_star(x,y): pu() goto(x,y) pd() seth(0) for i in range(5): fd(40) rt(144) for x in range(0,250,50): draw_star(x,0) done()
pu():提起画笔,以便移动画笔位置时不在画布上留下痕迹
goto(x,y):绘图起点设置为(x,y)
pd():放下画笔,此时画笔的移动将会留下痕迹
seth(angle):设置绘图的方向,0为正向上,180为正向下
如下图为180

下图则为0

使用递归,则可以绘制出非常复杂的图形。例如,下边的代码可以绘制一课分形树:
from turtle import * #设置色彩模式是RGB colormode(255) lt(90) lv=4 l=120 s=45 width(lv*3) #初始化RGB颜色: r=0;g=0;b=0 pencolor(r,g,b) #pu() bk(l) #pd() fd(l) def draw_tree(l,level): global r,g,b #获得当前画笔尺寸 w=width() #缩小画笔尺寸 width(w*3/4) #设置颜色 r=r+10 g=g+20 b=b+30 pencolor(r%200,g%200,b%200) l=3/4*l lt(s) #左转45° fd(l) if level<lv: draw_tree(l,level+1) bk(l) rt(2*s) fd(l) if level<lv: draw_tree(l,level+1) bk(l) lt(s) #存储之前的画笔尺寸 width(w) speed('fastest') draw_tree(l,1) done()

浙公网安备 33010602011771号