turtle的英文意思是“海龟”,今天学习的turtle库也叫作海龟绘图库。想象一下一只小海龟在海面上游泳,海龟游过的轨迹变成了一幅幅有趣的图案。

1. Turtle的绘图窗体布局

美术生作画时必不可少的两样东西:画纸和画笔。画纸在画板上,画板放在画架上。当我们需要使用Turtle来进行绘画时,画板就是我们的电脑显示器,画纸就是我们的Turtle窗口,画笔就是那一条小海龟,海龟游啊游啊一幅画就形成了。
图片来源:百度图片
我们将显示器左上角的坐标定义为 (0, 0),将Turtle绘图窗口的左上角定义为我们绘图时的原点,它相对于整个显示器的坐标为(startx, starty)。

可以使用 Turtle.setup(width, height, startx, starty) 函数来设置启动Turtle绘图窗口的位置和大小,以下是参数解释:

  • width:Turtle 绘图窗口的宽度。
  • height:Turtle 绘图窗口的宽度
  • startx:Turtle 绘图窗口距显示器左侧的距离
  • starty:Turtle 绘图窗口距显示器顶部的距离
  • 注:

  • width 和 height 如果值是整数,则表示该窗口占据多少个像素的宽度;如果为小数,则为宽度占据显示器的百分比,默认width占据 50%,height占据70%。
  • 如果 startx 和 starty 省略,则窗口默认处于显示器的正中心。
  • 2. Turtle空间坐标体系

    2.1 绝对坐标

    如下图所示,我们将画布的正中心当做绝对坐标(0,0)。海龟默认是向右侧运动的,所以我们将Turtle绘图窗体的右方向定义为 x 轴,上方向定义为 y 轴。
    绝对坐标里常用函数:

  • turtle.goto(x, y):指定 x 和 y 的值,海龟将会到达坐标为(x, y)的位置。
  • 2.2 海龟坐标

    站在海龟的角度,无论海龟当前的行进方向是朝向哪个角度的,都叫做前进方向,反向就后退方向,海龟运行的左侧叫做左侧方向,右侧叫做右侧方向。

    下面是常用的用于控制海龟的函数:

  • turtle.forward(distance):控制海龟前进 distance 个单位像素的距离。forwad 可以简写为 fd,即 turtle.forward(distance) 和 turtle.fd(distance) 的效果是一样的。
  • turtle.backward(distance):控制海龟后退 distance 个单位像素的距离。backward可以简写为 ,即 turtle.backward(distance) 和 turtle.bk(distance) 的效果是一样的。
  • turtle.circle(r,angle):以海龟当前位置,左侧的某一个点为圆心,半径为 r 的距离,画一个角度值为angle 的弧形。如果没有指定 angle 的值,则默认为360度,也就是画一个圆。r 和 angle 的值可以为负数,意为反方向。注意,顺时针旋转的角度度数值为负数,逆时针的为正数。
  • 3. Turtle 的角度坐标体系

    3.1 绝对角度

    turtle建立了一个空间坐标体系,那么在空间坐标中,海龟行进的方向也有一个角度,同样分为绝对角度和海龟角度。
    对于绝对角度来讲,绝对坐标的x正轴表示0度或360度,y正轴表示90度或-270度,x负轴表示180度或-180度,y负轴表示270度或-90度。
    相关的函数有:
    turtle.seth(angle):设置 angel 的值用于改变海龟行进方向,只改变方向不行进。

    3.2 海龟角度

    对于海龟角度来讲,为了更好的改变海龟的行进方向,使用左右的方式来改变它的行进角度。
    相关的函数有:
    turtle.left(angle):让海龟向左改变 angle 个角度
    turtle.right(angle):让海龟向右改变 angle 个角度

    4. Turtle 的 RGB 色彩体系

    RGB即Red、Green、Blue三种颜色的组合,这三种颜色的组合能够覆盖视力所能感知到的素有颜色。RGB每种颜色的取值范围为0-255之间的整数或者0-1之间的小数。常用的RGB颜色:

    英文名词 RGB整数值 RGB小数值 中文名词
    white (255,255,255) (1,1,1) 白色
    yellow (255,255,0) (1,1,0) 黄色
    black (0,0,0) (0,0,0) 黑色
    blue (0,0,255) (1,1,1) 蓝色

    更多更好看的颜色,可以访问以下链接:

    https://www.runoob.com/html/html-colorvalues.html

    turtle库默认采用RGB的小数值来表示颜色,当然也可以使用函数turtle.colormode(mode)来切换RGB数值模式。当mode为1.0时表示采用小数值来表现RGB,当mode为255时表示采用整数值来表现RGB。

    与颜色设置相关的函数:turtle.color()、turtle.pencolor()、turtle.fillcolor(),由于设置画笔颜色和填充色;还有turtle.bgcolor(),设置窗体背景色。

    5. Turtle常用函数

    5.1 画笔控制函数

  • turtle.penup() 或者 turtle.pu() 或者 turtle.up():抬笔,移动时不绘图

  • turtle.pendown() 或者 turtle.pd() 或者 turtle.down():落笔,移动时绘图

  • turtle.pensize(width):设置画笔尺寸

  • turtle.width(width):画笔宽度

  • turtle.pencolor(*args):如果不给参数,则返回当前画笔颜色,给出参数则是设定画笔颜色。设置颜色有三种方式的参数,pencolor(colorstring)、pencolor((r,g,b))和pencolor(r,g,b)

  • 5.2 运动控制函数

  • turtle.forward(distance) 或者 turtle.fd(distance):前进distance像素

  • turtle.backward(distance) 或者 turtle.bk(distance) 或者 turtle.back(distance):后退distance像素

  • turtle.circle(r,angle):以画笔(海龟)左侧为圆心,半径为r像素,画angle度的圆形。注意:海龟方向同时发生angle度变化

  • turtle.goto(x,y)、setpos(x,y)、setposition(x,y):由当前坐标前往指定坐标,这里使用绝对坐标,但画笔方向不会改变

  • 5.3 方向控制函数

  • turtle.setheading(angle) 或者 turtle.seth(angle):以绝对角度改变方向

  • turtle.left(angle) 或者 turtle.lt(angle):以海龟角度向左改变方向

  • turtle.right(angle) 或者 turtle.rt(angle):以海龟角度向右改变方向

  • 6. 绘图实例

    6.1 绘制一个正方形

    import turtle
    turtle.pensize(2)
    for i in range(4):
        turtle.fd(150)
        turtle.left(90)
    turtle.done()
    

    6.2 绘制一个正六边形

    import turtle
    turtle.pensize(2)
    for i in range(6):
        turtle.fd(150)
        turtle.left(60)
    turtle.done()
    

    END:声明

    博客内容不得用于商业用途,仅做学习交流。部分配图来自于中国大学MOOC网北理工嵩天老师的《Python语言程序》课程。
    课程传送门:《Python语言程序设计》

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python Turtle库详解

    发表评论