一、介绍
官方文档:https://docs.python.org/3/library/turtle.html
turtle模块可以进行图形绘制,原意为海龟,turtle的绘图过程就是模拟一只海龟在Python坐标系中爬行,可以有前进、后退、旋转等基本爬行动作,其爬行的轨迹就是绘制的图形。
在初始状态下,海龟从坐标原点(0,0)即画布正中央开始水平向右爬行,类似于数学上的直角坐标系,向右为x轴正方向,向上为y轴正方向。
二、画笔控制函数
| 函数 | 说明 |
|---|---|
| pendown()| pd()|down() | 按下画笔,之后海龟的移动将绘制形状 |
| penup()| pu()|up() | 抬起画笔,之后海龟的移动将不会绘制形状 |
| pensize() | width() | 设置画笔尺寸 |
| pen() | 设置笔的属性 “shown”: True/False “pendown”: True/False “pencolor”: color-string or color-tuple “fillcolor”: color-string or color-tuple “pensize”: positive number “speed”: number in range 0..10 “resizemode”: “auto” or “user” or “noresize” “stretchfactor”: (positive number, positive number) “outline”: positive number “tilt”: number |
| isdown() | True如果笔向下,False则返回;如果笔向上,则返回 |
| pencolor(* args ) | 设置画笔颜色 |
| fillcolor(* args ) | 设置填充颜色 |
| color(* args ) | 设置画笔颜色和填充颜色 将当前的pencolor和当前的fillcolor作为一对颜色规范字符串或元组返回,由pencolor()和 返回fillcolor() |
三、乌龟运动函数
| 函数 | 说明 |
|---|---|
| forward(distance) | fd(distance) | 向海龟当前前进方向前进distance距离 |
| backward(distance)| bk(distance)|back(distance) | 向海龟当前前进方向后退distance距离 |
| right(angle) | rt(angle) | 海龟向右转angle角度 |
| left(angle) | lt(angle) | 海龟向左转angle角度 |
| goto(x, y=None)或setpos(x, y=None)或setposition(x, y=None) | 海龟移动到绝对坐标位置 |
| setheading(to_angle)或seth(to_angle) | 将乌龟的方向设置为to_angle绝对角度方向 0 正东 90 正北 180 正南 270 正西 |
| home() | 海龟回到原始坐标起点(0,0) |
| circle(radius, extent=None, steps=None) | 省略extent,绘制圆形,半径为radius 给定extent,绘制弧形,弧形角度为extent |
| speed(speed=None) | 设置海龟的爬行速度,速度为0~10之间的整数 |
| undo() | 撤消(重复)上次乌龟动作。可用撤消操作的数量取决于撤消缓冲区的大小。 |
| stamp() | 在当前乌龟位置将乌龟形状的副本标记在画布上。返回该图章的stamp_id。 |
| clearstamp(stampid ) | stampid –整数,必须为上一次stamp()调用的返回值 删除具有给定Stampid的图章。 |
三、屏幕的函数
| 函数 | 说明 |
|---|---|
| turtle.bye() | 关闭龟图窗口 |
| turtle.setup(width = _CFG [“ width”],height = _CFG [“ height”],startx = _CFG [“ leftright”],starty = _CFG [“ topbottom”] ) | 设置主窗口的大小和位置 width:窗口宽度 如果为整数,则为像素大小;如果为浮点,则为屏幕的一小部分;默认为屏幕的50% height:窗口高度 如果是整数,则以像素为单位的高度;如果是float,则为屏幕的一部分;默认为屏幕的75% startx :如果为正,则从屏幕左边缘开始的像素位置,如果为负,则从右边缘开始的位置,如果为,则None水平居中 starty :如果为正,则从屏幕顶部边缘开始的像素位置,如果为负,则从底部边缘开始的位置,如果为,则None中心窗口垂直 |
四、实例
##绘制多边形import turtleturtle.setup(680,280,200,200) #设置主窗口的大小和位置turtle.pensize(5) #设置画笔尺寸为5turtle.speed(3) #设置海龟爬行速度为3turtle.color("red") #设置画笔颜色为redturtle.up() #抬起画笔,之后不作画def polygons(x,y,keep,fd,angle):turtle.goto(x,y) #海龟移动到绝对坐标(x,y)的位置上turtle.down() #按下画笔,之后海龟的移动开始作画for i in range(keep):turtle.forward(fd) #海龟向前移动fd的距离turtle.right(angle) #海龟右转angle角度turtle.up()polygons(-300,100,4,180,360/4) #绘制正方向polygons(-80,100,3,200,360/3) #绘制三角形polygons(160,100,6,100,360/6) #绘制正六边形##ps:画完之后,程序会自动关闭

import turtledef circles(x,y,rad,ang=None):turtle.up() #抬起画笔,之后不作画turtle.goto(x,y) #海龟移动到(x,y)位置上turtle.down() #按下画笔,之后海龟的移动开始作画turtle.circle(rad,ang) #绘制圆形,半径为rad,没有弧度值turtle.up() #抬起画笔,之后不作画def littlesnakes(x,y,loop,rad,ang):turtle.up()turtle.goto(x,y) #海龟移动到(x,y)位置上turtle.down() #按下画笔,之后海龟的移动开始作画for i in range(loop):turtle.circle(rad,ang) #绘制弧形,半径为rad,弧度值为ang,按照圆形在运动轨迹的左侧(逆时针方向)绘制turtle.circle(-rad,ang) #绘制弧形,半径为-rad,弧度值为ang,按照圆形在运动轨迹的右侧(顺时针方向)绘制turtle.up() #抬起画笔,之后不作画turtle.setup(688,300,200,200) #设置主窗口的大小和位置turtle.pensize(10) #设置画笔的大小为10turtle.speed(1) #海龟移动的速度为3turtle.color("blue") #填充颜色为bulecircles(x=-200,y=-100,rad=100) #绘制圆形circles(x=-100,y=-100,rad=100,ang=180) #绘制左半圆circles(x=100,y=-100,rad=-100,ang=180) #绘制右半圆littlesnakes(x=160,y=-100,loop=4,rad=20,ang=80) #绘制小蛇曲线

