一、介绍

官方文档: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中心窗口垂直

四、实例

  1. ##绘制多边形
  2. import turtle
  3. turtle.setup(680,280,200,200) #设置主窗口的大小和位置
  4. turtle.pensize(5) #设置画笔尺寸为5
  5. turtle.speed(3) #设置海龟爬行速度为3
  6. turtle.color("red") #设置画笔颜色为red
  7. turtle.up() #抬起画笔,之后不作画
  8. def polygons(x,y,keep,fd,angle):
  9. turtle.goto(x,y) #海龟移动到绝对坐标(x,y)的位置上
  10. turtle.down() #按下画笔,之后海龟的移动开始作画
  11. for i in range(keep):
  12. turtle.forward(fd) #海龟向前移动fd的距离
  13. turtle.right(angle) #海龟右转angle角度
  14. turtle.up()
  15. polygons(-300,100,4,180,360/4) #绘制正方向
  16. polygons(-80,100,3,200,360/3) #绘制三角形
  17. polygons(160,100,6,100,360/6) #绘制正六边形
  18. ##ps:画完之后,程序会自动关闭

image.png

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

image.png