python库之turtle库官方文档入门

2022-10-05 08:47:47

一、turtle库

1.基本介绍

turtle库:

  • (1)1969年诞生

  • (2)Python语言的标准库之一

  • (3)入门级的图形绘制函数库

2.turtle绘图原理

turtle海龟走过的轨迹绘制成了图形

3.官方文档

https://docs.python.org/3/library/turtle.html

二、turtle构建体系

1.turtle绘图窗体布局

在这里插入图片描述

(1)最小单位是像素,左上角是(0,0)

(2)startx与starty:绘图窗体出现在屏幕的哪里,后两个参数可选,默认正中心

2.绝对坐标

在这里插入图片描述
绝对坐标:就是标准的xOy坐标系,上y右x,中央点是(0,0)

3.海龟坐标

在这里插入图片描述
standard模式下(默认):头朝的方向就是前方:如当龟头朝右时,右侧就为前方。开始默认头朝右.

4.turtle角度坐标体系

角度坐标体系:就是数学上的坐标轴角度,绕x轴逆时针角度从0°到360°

在这里插入图片描述

(1)turtle.setheading(angle) 别名turtle.seth(angle):只改变方向不行进。如turtle.seth(90):海龟的朝向为90度

注意:与当前海龟头的朝向没有关系,90度就一定向上

(2)turtle.left(angle)与turtle.right(angle):在海龟当前头的方向上再向左/右转多少度

三、函数纵览

1.海龟方法

(1)海龟动作

在这里插入图片描述

(2)画笔控制

在这里插入图片描述

(3)海龟状态

在这里插入图片描述

(4)使用事件

在这里插入图片描述

(5)特殊的海龟方法

在这里插入图片描述

2.TurtleScreen / Screen的方法

在这里插入图片描述
在这里插入图片描述

四、海龟方法详解

1.海龟动作

(1)移动和绘制

turtle.forward(distance)
turtle.fd(distance)

参数:
distance – 一个数值 (整型或浮点型)

作用:
海龟前进 distance 指定的距离,方向为海龟的朝向


turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)

参数:
distance – 一个数值

作用:
海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向


turtle.right(angle)
turtle.rt(angle)

参数:
angle – 一个数值 (整型或浮点型)

作用:
海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。)


turtle.left(angle)
turtle.lt(angle)

参数:
angle – 一个数值 (整型或浮点型)

作用:
海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。)


turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None)

参数:

  • x – 一个数值或数值对/向量
  • y – 一个数值或 None

如果 y 为 None,x 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).

作用:
海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。

例子:

# x和y
turtle.setpos(60,30)# x为元组
turtle.setpos((20,80))# x为pos()返回的元组
tp= turtle.pos()
turtle.setpos(tp)

turtle.setx(x)

参数:
x – 一个数值 (整型或浮点型)

作用:
设置海龟的横坐标为 x,纵坐标保持不变。


turtle.sety(y)

参数:
y – 一个数值 (整型或浮点型)

作用:
设置海龟的纵坐标为 y,横坐标保持不变。


turtle.setheading(to_angle)
turtle.seth(to_angle)

参数:
to_angle – 一个数值 (整型或浮点型)

作用:
设置海龟的朝向为 to_angle。


turtle.home()

作用:
海龟移至初始坐标 (0,0),并设置朝向为初始方向 (由海龟模式确定,参见 mode())。


turtle.circle(radius, extent=None, steps=None)

参数:

  • radius – 一个数值 (整型或浮点型),表示半径
    如果 radius 为正值则圆心在乌龟头的左边,否则圆心在乌龟头的右边。

  • extent – 一个数值 (整型或浮点型),表示角度
    如未指定 extent则绘制整个圆,指定角度(可以大于360°)则绘制圆弧。
    如果 radius 为正值则按乌龟的前进的方向,否则按乌龟的倒退的方向。

  • steps – 一个整型数
    如未指定 steps则绘制圆弧,指定则绘制多边形(边数大于0)。

作用:
绘制一个 radius 指定半径的多边形部分。

例子:

# 绘制在左边的、按前进方向的import turtle
turtle.circle(50,270)
turtle.done()

在这里插入图片描述

# 绘制在右边的、按前进方向的import turtle
turtle.circle(50,270)
turtle.done()

在这里插入图片描述

# 绘制在左边的、按后退方向的import turtle
turtle.circle(50,270)
turtle.done()

在这里插入图片描述

# 绘制在右边的、按后退方向的import turtle
turtle.circle(50,270)
turtle.done()

在这里插入图片描述

# 绘制三角形import turtle
turtle.circle(50,360,3)
turtle.done()

在这里插入图片描述


turtle.dot(size=None,*color)

参数:

  • size – 一个整型数 >= 1 (如果指定)
    如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的最大值。
  • color – 一个颜色字符串或颜色数值元组
    未指定则是画笔颜色。

作用:
绘制一个直径为 size,颜色为 color 的圆点。

例子:
turtle.dot()turtle.dot(50)turtle.dot("blue")turtle.dot(50,"blue")

import turtle
turtle.dot(50,"blue")
turtle.done()

在这里插入图片描述


turtle.undo()

作用:
撤消 (或连续撤消) 最近的一个 (或多个) 海龟动作。可撤消的次数由撤消缓冲区的大小决定。


turtle.speed(speed=None)

参数:

  • speed – 一个 0到10 范围内的整型数或速度字符串
  • 无参:返回当前海龟的速度

speed对应表:
如果输入数值大于 10 或小于 0.5 则速度设为 0。

字符串数字含义
“fastest”0最快
“fast”10
“normal”6正常
“slow”3
“slowest”1最慢

速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。speed = 0 表示没有动画效果(转向),但绘制还是需要时间,最快。

作用:
设置海龟移动的速度或返回当前海龟的速度。

(2)获取海龟状态

turtle.position()
turtle.pos()

作用:
返回海龟当前的坐标 (x,y) (为 Vec2D 矢量类对象)。


turtle.towards(x, y=None)

参数:

  • x – 一个数值或数值对/矢量,或一个海龟实例
  • y – 一个数值——如果 x 是一个数值,否则为 None

返回一个角度,从海龟位置到到 (x,y)的矢量到海龟初始朝向的矢量的夹角。

例子:

import turtle
turtle.goto(50,50)print(turtle.towards(0,0))
turtle.done()# 225.0# 海龟朝向0°,从(50,50)到(0,0)的矢量朝向225°,两者相差225.0

在这里插入图片描述


turtle.xcor()

作用:
返回海龟的 x 坐标。


turtle.ycor()

作用:
返回海龟的 y 坐标。


turtle.heading()

作用:
返回海龟当前的朝向的角度


turtle.distance(x, y=None)

参数:

  • x – 一个数值或数值对/矢量,或一个海龟实例
  • y – 一个数值——如果 x 是一个数值,否则为 None

返回从海龟位置到 (x,y)的单位距离。

(3)度量单位设置

turtle.degrees(fullcircle=360.0)

参数:
fullcircle – 一个数值

作用:
设置一个圆周为多少 “度”。默认值为 360 度。

>>> turtle.home()>>> turtle.left(90)>>> turtle.heading()90.0>>> turtle.degrees(400.0)>>> turtle.heading()100.0# 原来的朝向占一个圆的四分之一,90/360。现在,还要占四分之一,那就是400/4=100°

turtle.radians()

设置角度的度量单位为弧度。其值等于 度 ÷ 180 × π 度\div 180 \times \pi÷180×π

>>> turtle.home()>>> turtle.left(90)>>> turtle.heading()90.0>>> turtle.radians()>>> turtle.heading()1.5707963267948966# 90/180*3.14=1.57...

2.画笔控制

(1)绘图状态

turtle.pendown()
turtle.pd()
turtle.down()

作用:
画笔落下 – 移动时将画线。


turtle.penup()
turtle.pu()
turtle.up()

作用:
画笔抬起 – 移动时不画线。


turtle.pensize(width=None)
turtle.width(width=None)

参数:

  • width – 一个正数值
  • 无参:返回画笔的线条粗细。

作用:
设置线条的粗细为 width 或返回该值。


turtle.isdown()

作用:
如果画笔落下返回 True,如果画笔抬起返回 False。

(2)颜色控制

turtle.pencolor(*args)

参数:

  • pencolor()
    返回表示当前画笔颜色的颜色描述字符串或元组。

  • pencolor(colorstring)
    设置画笔颜色为 colorstring 指定的 Tk 颜色描述字符串。
    如:turtle.pencolor("brown")turtle.pencolor('#32c18f')

  • pencolor((r, g, b))
    设置画笔颜色为以 r, g, b 元组表示的 RGB 颜色。r, g, b 的取值范围应为0…colormode。
    如:turtle.pencolor((0.2, 0.8, 0.55))turtle.pencolor((51.0, 204.0, 140.0))

  • pencolor(r, g, b)
    设置画笔颜色为以 r, g, b 表示的 RGB 颜色。r, g, b 的取值范围应为 0…colormode。
    如:turtle.pencolor(0.2, 0.8, 0.55)turtle.pencolor(51.0, 204.0, 140.0)

作用:
返回或设置画笔颜色。


turtle.fillcolor(*args)

参数:同turtle.pencolor(*args)

  • fillcolor()
  • fillcolor(colorstring)
  • fillcolor((r, g, b))
  • fillcolor(r, g, b)

作用:
返回或设置填充颜色。


turtle.color(*args)

参数:

  • color()
    返回以一对颜色描述字符串或元组表示的画笔颜色和填充颜色,两者可分别由 pencolor() 和 fillcolor() 返回。

  • color(colorstring), color((r,g,b)), color(r,g,b)
    同时设置填充颜色和画笔颜色为指定的值。

  • color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))
    相当于pencolor(colorstring1)fillcolor(colorstring2)

作用:
返回或设置画笔颜色和填充颜色。

(3)填充

turtle.filling()

作用:
返回填充状态 (填充为 True,否则为 False)。


turtle.begin_fill()

作用:
在绘制要填充的形状之前调用。要配合turtle.end_fill()使用。


turtle.end_fill()

作用:
填充上次调用 begin_fill() 之后绘制的形状。要配合turtle.begin_fill()使用。

例子:

import turtle
turtle.color("black","red")
turtle.begin_fill()
turtle.circle(80)
turtle.end_fill()
turtle.done()

在这里插入图片描述

(4)更多绘图控制

turtle.reset()

作用:
从屏幕中删除海龟的绘图,海龟回到原点并设置所有变量为默认值。


turtle.clear()

作用:
从屏幕中删除指定海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。

turtle.write(arg, move=False, align="left", font=("Arial",8,"normal"))

参数:

  • arg – 要书写到 TurtleScreen 的对象
    如:"something"123(1,2)[1,2,3]

  • move – True/False
    如果 move 为 True,画笔会移动到文本的右下角,这样文字就不会叠在一块了。

  • align – 字符串 “left”, “center” 或 “right”
    align 指定对齐方式 (“left”, “center” 或 right")

  • font – 一个三元组 (fontname, fontsize, fonttype)
    font 指定字体

书写文本 - arg 指定的字符串 - 到当前海龟位置。

例子:

import turtle
turtle.write("Home = ",True, align="center")
turtle.write([123,456],True)
turtle.done()

在这里插入图片描述

3.海龟状态

(1)可见性

turtle.hideturtle()
turtle.ht()

作用:
使海龟不可见。当你绘制复杂图形时这是个好主意,因为隐藏海龟可显著加快绘制速度。


turtle.showturtle()
turtle.st()

作用:
使海龟可见。


turtle.isvisible()

作用:
如果海龟显示返回 True,如果海龟隐藏返回 False。

(2)外观

turtle.shape(name=None)

参数:

  • name – 一个有效的形状名字符串
  • 无参:返回当前的形状名

设置海龟形状或返回当前的形状名。

形状名图形
“arrow”在这里插入图片描述
“blank”(透明)在这里插入图片描述
“turtle”在这里插入图片描述
“circle”在这里插入图片描述
“square”在这里插入图片描述
“triangle”在这里插入图片描述
“classic”在这里插入图片描述

turtle.register_shape(name, shape=None)
turtle.addshape(name, shape=None)

调用此函数有三种不同方式:

  • name 为一个 gif 文件的文件名, shape 为 None: 安装相应的图像形状。:
    注解:当海龟转向时图像形状 不会 转动,因此无法显示海龟的朝向!

  • name 为指定的字符串,shape 为由坐标值对构成的元组: 安装相应的多边形形状。

import turtle
turtle.register_shape("myshape",((-20,20),(0,-10),(50,0)))
turtle.shape("myshape")
turtle.done()
  • name 为指定的字符串, 为一个 (复合) Shape 类对象: 安装相应的复合形状。

作用:
将一个海龟形状加入 TurtleScreen 的形状列表。只有这样注册过的形状才能通过执行 shape(shapename) 命令来使用。

4.使用事件

turtle.onclick(fun, btn=1, add=None)

参数:

  • fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
    如果 fun 值为 None,则移除现有的绑定。

  • btn – 鼠标按钮编号,默认值为 1 (鼠标左键)
    左中右:1,2,3

  • add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定

作用:
将 fun 指定的函数绑定到鼠标点击此海龟引发事件或移除绑定。(注意,不是随便点,是点击海龟)

例子:

import turtledefturtlefd(x,y):
    turtle.fd(100)

turtle.onclick(turtlefd)
turtle.done()

在这里插入图片描述


turtle.onrelease(fun, btn=1, add=None)

参数:

  • fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
    如果 fun 值为 None,则移除现有的绑定。

  • btn – 鼠标按钮编号,默认值为 1 (鼠标左键)

  • add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定

作用:
将 fun 指定的函数绑定到在此海龟上释放鼠标按键事件。(注意,在海龟上点击后释放鼠标才有效,在别的地方点击把鼠标拖过来释放无效)


turtle.ondrag(fun, btn=1, add=None)

参数:

  • fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
    如果 fun 值为 None,则移除现有的绑定。

  • btn – 鼠标按钮编号,默认值为 1 (鼠标左键)

  • add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定

作用:
将 fun 指定的函数绑定到在此海龟上移动鼠标事件。

例子:在此之后点击并拖动海龟可在屏幕上手绘线条 (如果画笔为落下)

import turtledefturtlefd(x,y):
    turtle.goto(x,y)

turtle.ondrag(turtlefd)
turtle.done()

在这里插入图片描述

5.特殊海龟方法

turtle.begin_poly()

开始记录多边形的顶点。当前海龟位置为多边形的第一个顶点。

turtle.end_poly()

停止记录多边形的顶点。当前海龟位置为多边形的最后一个顶点。它将连线到第一个顶点。

turtle.get_poly()

返回最新记录的多边形。


五、TurtleScreen/Screen 方法详解

1.窗口控制

turtle.bgcolor(*args)

参数:
turtle.pencolor(*args)

作用:
设置或返回 TurtleScreen 的背景颜色。


turtle.bgpic(picname=None)

参数:

  • picname – 一个字符串, gif-文件名, “nopic”, 或 None
    如果 picname 为一个文件名,则将相应图片设为背景。
    如果 picname 为 “nopic”,则删除当前背景图片。
    如果 picname 为 None,则返回当前背景图片文件名。

作用:
设置背景图片或删除背景或返回当前背景图片名称。

PS:路径还是“\”或“/”,https://blog.csdn.net/sandalphon4869/article/details/86767978


turtle.reset()
turtle.resetscreen()

作用:
删除所有海龟的全部绘图,重置屏幕上的所有海龟为其初始状态。


turtle.clear()
turtle.clearscreen()

作用:
不仅达到turtle.reset()的作用,而且删除背景片成白色背景,无事件绑定并启用追踪。


turtle.screensize(canvwidth=None, canvheight=None, bg=None)

参数:

  • canvwidth – 正整型数,以像素表示画布的新宽度值
    这个值可以超过电脑屏幕的尺寸,可以展示一副超大的画布。

  • canvheight – 正整型数,以像素表示画面的新高度值
    这个值可以超过电脑屏幕的尺寸,可以展示一副超大的画布。

  • bg – 颜色字符串或颜色元组,新的背景颜色

作用:

  • 如未指定任何参数,则返回当前的 (canvaswidth, canvasheight)。
  • 否则改变作为海龟绘图场所的画布大小。(通过此方法可以令之前绘制于画布之外的图形变为可见。可以使用滚动条观察画布的隐藏区域.)

PS:
画布大小还是以画布中心点为中心的,而且这个滑动条可以滑动展示的区域是展示图形的那个画布大小,而不是能一直无限地拖动。

2.动画控制

turtle.delay(delay=None)

参数:

  • delay – 正整型数
  • 无参返回以毫秒数表示的延迟值 delay

作用:
设置或返回以毫秒数表示的延迟值 delay。(这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。


turtle.tracer(n=None, delay=None)

参数:

  • n – 非负整型数
    如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。(可被用来加速复杂图形的绘制。)
    如果调用时不带参数,则返回当前保存的 n 值。

  • delay – 非负整型数
    第二个参数设置延迟值 (参见 delay())。

作用:
启用/禁用海龟动画并设置刷新图形的延迟时间。


turtle.update()

作用:
执行一次 TurtleScreen 刷新。在禁用追踪时使用。

3.使用屏幕事件

turtle.listen(xdummy=None, ydummy=None)

作用:
设置焦点到 TurtleScreen (以便接收按键事件)。使用两个 Dummy 参数以便能够传递 listen() 给 onclick 方法。


turtle.onkeypress(fun, key=None)

参数:

  • fun – 一个无参数的函数或 None
    如果 fun 值为 None,则移除事件绑定。

  • key – 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”)
    如未指定键则绑定到任意键的按下事件。

作用:
绑定 fun 指定的函数到指定键的按下事件。注: 为了能够注册按键事件,必须得到焦点。(参见 listen() 方法。)

例子:

#按方向上键画正方形(可以一直按进行快速移动)import turtledeff():
    turtle.fd(100)
    turtle.left(90)

turtle.speed(0)
turtle.listen()
turtle.onkeypress(f,"Up")#解除绑定 turtle.onkeypress(None,"Up")
turtle.done()

turtle.onkey(fun, key)
turtle.onkeyrelease(fun, key)

参数:

  • fun – 一个无参数的函数或 None
    如果 fun 值为 None,则移除事件绑定。

  • key – 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”)

作用:
绑定 fun 指定的函数到按键按下并释放事件。
注: 为了能够注册按键事件,TurtleScreen 必须得到焦点。(参见listen() 方法)

例子:

#按方向上键释放后开始画正方形import turtledeff():
    turtle.fd(100)
    turtle.left(90)

turtle.speed(0)
turtle.listen()
turtle.onkey(f,"Up")#解除绑定 turtle.onkey(None,"Up")
turtle.done()

turtle.onscreenclick(fun, btn=1, add=None)

参数:

  • fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
    如果 fun 值为 None,则移除现有的绑定。

  • btn – 鼠标按钮编号,默认值为 1 (鼠标左键)

  • add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定

作用:
绑定 fun 指定的函数到鼠标点击屏幕事件。

PS:turtle.onclick()turtle.onscreenclick()不一样,前者是只有点击到海龟身上才行,后者是点击画布任意区域就行。

例子:

#点击画布任意区域,海龟移动到那里import turtledeff(x,y):
    turtle.goto(x,y)

turtle.onscreenclick(f)
turtle.done()

turtle.ontimer(fun, t=0)

参数:

  • fun – 一个无参数的函数

  • t – 一个数值 >= 0

作用:
安装一个计时器,在 t 毫秒后调用 fun 函数。

例子:

import turtledeff():
    turtle.fd(100)

turtle.ontimer(f,100)
turtle.done()
turtle.mainloop()
turtle.done()

必须作为一个海龟绘图程序的结束语句。要不然程序会无响应。

4.设置与特殊方法

turtle.mode(mode=None)

参数:

  • mod
  • 作者:sandalphon4869
  • 原文链接:https://blog.csdn.net/sandalphon4869/article/details/99443949
    更新时间:2022-10-05 08:47:47