Python 的 Turtle 库, 更详细的说明见官方文档

意识

我们可以想象有一只海龟, 尾巴上挂着颜料桶, 所以, 它走过的旅途就变成了一幅画

基本框架

坐标系

PythonTrutle坐标系

基本程序框架

  1. # 导入turtle库
  2. import turtle
  3. # 设置笔的状态
  4. p = turtle.Pen()
  5. p.pensize(3)
  6. p.pencolor('gold')
  7. # 笔进行移动
  8. p.forward(100)
  9. # 停止程序, 但绘图窗体不自动关闭. 如果没有它, 绘图窗口在程序运行结束后会自动关闭
  10. turtle.done()
  1. # 导入turtle库
  2. import turtle as t
  3. # 设置笔的状态
  4. t.pensize(3)
  5. t.pencolor('gold')
  6. # 笔进行移动
  7. t.forward(100)
  8. # 停止程序, 但绘图窗体不自动关闭. 如果没有它, 绘图窗口在程序运行结束后会自动关闭
  9. t.done()
  1. from turtle import * # 直接将turtle库的所有函数都导入, 那么之后就不需要声明对象, 而是可以直接调用库里面的函数
  2. color('red', 'yellow')
  3. begin_fill()
  4. while True:
  5. forward(200)
  6. left(170)
  7. if abs(pos()) < 1:
  8. break
  9. end_fill()
  10. done()

通常, 我们还会载入 time 模块, 来控制海龟画笔的运动速度:

  1. import turtle
  2. import time

设置画布

设置画布大小 & 窗口大小

  1. turtle.setup(800, 600) #设置窗口大小
  2. turtle.screensize(800, 600, 'white') #设置画布大小和背景颜色

很多人发现设置画布大小后, 窗口没有变化, 那是因为混淆了”画布”和”窗口”的概念. 注意, 画布 ≠ 窗口! 窗口是程序的尺寸, 是我们最直接能看到的, 而画布大小则是海龟的活动范围.

那么, 如果画布 > 窗口, 那么窗口就会出现滚动条 但是, 如果画布 < 窗口, 则画布会铺满窗口!!!

设置背景颜色

  1. # 除了使用 screensize 设置背景颜色之外:
  2. turtle.bgcolor('gray')

清理画布

  1. clear()
  2. clearscreen()

设置笔的状态

创建笔

  1. import turtle
  2. t = turtle.Pen()
  3. # 也可以这样:
  4. import turtle as t

设置笔的速度

  1. speed() # 可以设置的范围在 0-10 之间
  • 取值范围是 0 - 10
    • 0: 最快
    • 我们可以理解为 0 表示没有动画效果, 比如 forward 命令, 是直接从这个点跳跃到那个点, 而不是有走过去的动画
    • 10: 快
    • 6: 正常速度
    • 3: 慢
    • 1: 最慢
  • 注意
    • 如果输入数值大于 10 或者小于 0.5, 则速度自动调整为 0, 也就最快的速度

抬笔

  1. up()
  2. penup()

落笔

  1. down()
  2. pendown()

判断画笔是否落下

  1. isdown()

设置笔的粗细

  1. pensize()
  2. width()
  3. # 注意,没有size()

设置笔的颜色

  1. # 参数可以是英文单词、RGB颜色、十六进制颜色
  2. pencolor('red')
  3. pencolor('#ff0000')
  4. colormode(255)
  5. pencolor(255, 0, 0)#使用 RGB颜色之前, 需要执行 colormode(255) 来开启RGB模式

颜色填充

想要填充颜色, 海龟的轨迹必须在 begin_fill() 和 end_fill() 之间

  1. fillcolor() #设定填充颜色
  2. begin_fill() #开始填充
  3. # 代码
  4. end_fill() #结束填充

判断是否填充

  1. filling()

同时设置笔的颜色和填充颜色

  1. color(笔的颜色, 填充颜色)

基本绘图命令

前进

  1. forward()
  2. fd()

后退

  1. backward()
  2. bk()
  3. back()

右转 / 顺时针旋转

  1. right()
  2. rt()

左转 / 逆时针旋转

  1. left()
  2. lt()

设置朝向

  1. setheading()

画圆

  1. circle()

画点

画点, 也可以认为是画实心圆.

  1. dot()
  2. dot(100, 'blue') #绘制半径为100、蓝色的圆点, 也就是实心圆

设置角度

  1. degrees()

设置弧度

  1. radians()

进阶绘图命令

印章

  1. stamp()

清除印章

  1. clearstamp()

清除多个印章

  1. clearstamps()

克隆

  1. clone()

重置

reset()

清空

  1. clear()
  2. clearscreen()

书写

  1. write()

坐标命令

移动到指定坐标

  1. goto()
  2. 默认会连线

设置 x 坐标

  1. setx()

设置 y 坐标

  1. sety()

获取角度

设置角度

返回原点

  1. home()

获取笔的属性

获取位置

  1. position()
  2. pos()

获取方向

  1. towards()

获取 x 坐标

  1. xcor()

获取 y 坐标

  1. ycor() #表示y + coordinate

获取朝向

  1. heading()

获取距离

  1. distance()

海龟状态命令

设置海龟外形

PythonTurtle海龟外形

  • 海龟一共有 7 种外形:
    • 箭头 / arrow
    • 空白 / blank
    • 圆形 / circle
    • 经典 / classic
    • 正方形 / square
    • 三角形 / triangle
    • 海龟 / turtle
      1. shape(name='turtle') #设置为海龟外形

      显示海龟

      1. showturtle()
      2. st()

      隐藏海龟

      1. hideturtle()
      2. ht()

      是否可见

      1. isvisible()

      暂停

      ```python import time

time.sleep(秒数)

  1. ##撤销操作
  2. ```python
  3. undo()

输入 & 输出

文本输入

  1. textinput()

数字输入

  1. numinput()

监听

  1. listen()

当鼠标点击

  1. onclick()

当鼠标释放

  1. onrelease()

当鼠标拖动

  1. ondrag()

当键盘按下

  1. onkeypress()

当键盘按下并释放

  1. onkey()
  2. onkeyrelease()

当点击屏幕

  1. onclick()
  2. onscreenclick()

数学函数

随机函数

  1. import random #导入 random 库
  2. random.randint(开始值, 结束值) //从开始值到结束值之间的整数中, 随机选择一个
  3. random.choice(非空序列) //从非空序列中, 随机选择一个

动画

延迟

  1. delay()

追踪

  1. tracer()

更新

  1. update()

当达到定时

  1. ontimer()

主循环

  1. mainloop()
  2. done()

其他

保存为 svg 矢量图格式

首先安装 svg_turtle 库: pip install svg_turtle

  1. from svg_turtle import SvgTurtle
  2. t = SvgTurtle(500, 500) #指定图片大小
  3. t.forward(200) #画一条线
  4. t.dot(10) #画一个点, 或者认为是实心圆
  5. t.save_as('/Users/crafter/Desktop/hello.svg') #需要指定保存文件的绝对路径