turtle ---turtle图案

源代码: Lib/turtle.py


介绍

乌龟图形是一种向孩子们介绍编程的流行方式。它是1967年由Wally Feurzeig、Seymour Papert和Cynthia Solomon开发的原始徽标编程语言的一部分。

想象一只机器龟在X-Y平面上从(0,0)开始。后一 import turtle 给它命令 turtle.forward(15) ,它会移动(在屏幕上!)在它所面向的方向上15个像素,移动时画一条线。给它命令 turtle.right(25) 顺时针旋转25度。

通过将这些命令和类似命令组合在一起,可以很容易地绘制出复杂的形状和图片。

这个 turtle 模块是对同一命名模块从Python标准发行版到Python2.5版的扩展重新实现。

它试图保持旧turtle模块的优点,并(几乎)100%兼容它。这意味着,首先使学习程序员能够在使用模块时交互地使用所有的命令、类和方法,从空闲运行到 -n 开关。

Turtle模块以面向对象和面向过程的方式提供Turtle图形原语。因为它使用 tkinter 对于底层图形,它需要一个安装有tk支持的python版本。

面向对象接口基本上使用两个+两个类:

  1. 这个 TurtleScreen 类将图形窗口定义为绘制turtle的操场。其构造函数需要 tkinter.Canvas 或A ScrolledCanvas 作为参数。应该在以下情况下使用 turtle 用作某些应用程序的一部分。

    函数 Screen() 返回 TurtleScreen 子类。此函数应在以下情况下使用: turtle 用作独立的图形处理工具。作为单例对象,不可能从其类继承。

    Turtlescreen/screen的所有方法也作为函数存在,即作为面向过程的接口的一部分。

  2. RawTurtle (别名: RawPen )定义绘制在 TurtleScreen . 它的构造函数需要一个画布、滚动的canvas或Turtlescreen作为参数,因此rawturtle对象知道在哪里绘制。

    派生自rawturtle是子类 Turtle (别名: Pen ,它引用了“the” Screen 如果尚未存在,则自动创建的实例。

    rawturtle/turtle的所有方法也作为函数存在,即面向过程的接口的一部分。

过程接口提供从类的方法派生的函数 ScreenTurtle . 它们与相应的方法具有相同的名称。每当调用从screen方法派生的函数时,都会自动创建screen对象。每当调用从Turtle方法派生的任何函数时,都会自动创建一个(未命名的)Turtle对象。

要在屏幕上使用多个turtle,必须使用面向对象的界面。

注解

在以下文档中,给出了函数的参数列表。当然,方法有附加的第一个参数 self 这里省略了。

可用的turtle和筛网方法概述

龟法

龟运动
移动和绘制
告诉turtle的状态
设置和测量
笔控制
绘图状态
色彩控制
填满
更多绘图控件
turtle状态
能见度
外观
使用事件
特殊龟法

高台筛/筛网方法

窗口控制
动画控件
使用屏幕事件
设置和特殊方法
输入法
特定于筛选的方法

龟/龟的方法及其功能

本节中的大多数示例都涉及一个名为 turtle .

龟运动

turtle.forward(distance)
turtle.fd(distance)
参数

distance -- 数字(整数或浮点)

将turtle向前移动指定的 距离 朝着turtle的方向。

>>> turtle.position()
(0.00,0.00)
>>> turtle.forward(25)
>>> turtle.position()
(25.00,0.00)
>>> turtle.forward(-75)
>>> turtle.position()
(-50.00,0.00)
turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)
参数

distance -- 一个数字

把turtle向后移动 距离 与turtle前进方向相反。不要改变turtle的航向。

>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
>>> turtle.position()
(-30.00,0.00)
turtle.right(angle)
turtle.rt(angle)
参数

angle -- 数字(整数或浮点)

把turtle右转 单位。(单位默认为度,但可以通过 degrees()radians() 功能。)角度方向取决于turtle模式,请参见 mode() .

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
turtle.left(angle)
turtle.lt(angle)
参数

angle -- 数字(整数或浮点)

把turtle左转 单位。(单位默认为度,但可以通过 degrees()radians() 功能。)角度方向取决于turtle模式,请参见 mode() .

>>> turtle.heading()
22.0
>>> turtle.left(45)
>>> turtle.heading()
67.0
turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None)
参数
  • x -- 数字或数字对/矢量

  • y -- 一个数字或 None

如果 yNonex 必须是一对坐标或 Vec2D (例如,由 pos()

把turtle移到绝对位置。如果笔落下,画线。不要改变turtle的方位。

 >>> tp = turtle.pos()
 >>> tp
 (0.00,0.00)
 >>> turtle.setpos(60,30)
 >>> turtle.pos()
 (60.00,30.00)
 >>> turtle.setpos((20,80))
 >>> turtle.pos()
 (20.00,80.00)
 >>> turtle.setpos(tp)
 >>> turtle.pos()
 (0.00,0.00)
turtle.setx(x)
参数

x -- 数字(整数或浮点)

将turtle的第一个坐标设置为 x ,保持第二个坐标不变。

>>> turtle.position()
(0.00,240.00)
>>> turtle.setx(10)
>>> turtle.position()
(10.00,240.00)
turtle.sety(y)
参数

y -- 数字(整数或浮点)

将turtle的第二个坐标设置为 y ,保持第一个坐标不变。

>>> turtle.position()
(0.00,40.00)
>>> turtle.sety(-10)
>>> turtle.position()
(0.00,-10.00)
turtle.setheading(to_angle)
turtle.seth(to_angle)
参数

to_angle -- 数字(整数或浮点)

将turtle的方向设置为 to_angle . 以下是一些常见的度数方向:

标准模式

标志模式

0东

0北

90北

90东

180西

180南

270南

270西

>>> turtle.setheading(90)
>>> turtle.heading()
90.0
turtle.home()

将Turtle移动到原点(坐标(0,0)并将其方向设置为起始方向(取决于模式,请参见 mode()

>>> turtle.heading()
90.0
>>> turtle.position()
(0.00,-10.00)
>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
turtle.circle(radius, extent=None, steps=None)
参数
  • radius -- 一个数字

  • extent -- 一个数字(或) None

  • steps -- 整数(或 None

画一个给定的圆 半径 . 中心是 半径 龟的剩余单位; 程度 --角度——决定画圆的哪个部分。如果 程度 如果没有给出,则绘制整个圆。如果 程度 不是整圆,圆弧的一个端点是当前笔的位置。如果 半径 为正,否则为顺时针方向。最后,龟的方向被 程度 .

因为圆是由内接的正多边形来近似的, 步骤 确定要使用的步骤数。如果没有给出,将自动计算。可用于绘制规则多边形。

>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(50)
>>> turtle.position()
(-0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(120, 180)  # draw a semicircle
>>> turtle.position()
(0.00,240.00)
>>> turtle.heading()
180.0
turtle.dot(size=None, *color)
参数
  • size -- 一个大于等于1的整数(如果给定)

  • color -- 颜色字符串或数字颜色元组

画一个直径为的圆点 size 使用 颜色 . 如果 size 如果没有给出,则使用最大压力+4和2*压力。

>>> turtle.home()
>>> turtle.dot()
>>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)
>>> turtle.position()
(100.00,-0.00)
>>> turtle.heading()
0.0
turtle.stamp()

在画布上的当前turtle位置上标记一个turtle形状的副本。返回该图章的图章ID,可通过调用 clearstamp(stamp_id) .

>>> turtle.color("blue")
>>> turtle.stamp()
11
>>> turtle.fd(50)
turtle.clearstamp(stampid)
参数

stampid -- 整数,必须是上一个的返回值 stamp() 调用

删除给定的标记 雄蕊 .

>>> turtle.position()
(150.00,-0.00)
>>> turtle.color("blue")
>>> astamp = turtle.stamp()
>>> turtle.fd(50)
>>> turtle.position()
(200.00,-0.00)
>>> turtle.clearstamp(astamp)
>>> turtle.position()
(200.00,-0.00)
turtle.clearstamps(n=None)
参数

n -- 整数(或 None

删除全部或第一个/最后一个 n turtle的邮票。如果 nNone ,删除所有邮票,如果 n >0先删除 n 邮票,否则如果 n < 0删除最后 n 邮票。

>>> for i in range(8):
...     turtle.stamp(); turtle.fd(30)
13
14
15
16
17
18
19
20
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
turtle.undo()

撤消(重复)最后一个turtle动作。可用的撤消操作数由UndoBuffer的大小决定。

>>> for i in range(4):
...     turtle.fd(50); turtle.lt(80)
...
>>> for i in range(8):
...     turtle.undo()
turtle.speed(speed=None)
参数

speed -- 0..10或speedString范围内的整数(见下文)

将turtle的速度设置为介于0到10之间的整数值。如果没有给出参数,则返回当前速度。

如果输入值大于10或小于0.5,则速度设置为0。速度字符串映射到速度值,如下所示:

  • “最快”:0

  • “快速”:10

  • “正常”:6

  • “慢”:3

  • “最慢”:1

从1到10的速度执行越来越快的线绘制和turtle转动动画。

注意: 速度 =0表示 no 动画发生。向前/向后使turtle跳跃,同样向左/向右使turtle立即转向。

>>> turtle.speed()
3
>>> turtle.speed('normal')
>>> turtle.speed()
6
>>> turtle.speed(9)
>>> turtle.speed()
9

告诉turtle的状态

turtle.position()
turtle.pos()

返回turtle的当前位置(x,y)(作为 Vec2D 向量)。

>>> turtle.pos()
(440.00,-0.00)
turtle.towards(x, y=None)
参数
  • x -- 数字或数字对/矢量或turtle实例

  • y -- 数字中频 x 是个数字,否则 None

返回从海龟位置到(x,y)、向量或另一个海龟指定的位置的直线之间的角度。这取决于海龟的起始方向,这取决于模式-“标准”/“世界”或“标志”。

>>> turtle.goto(10, 10)
>>> turtle.towards(0,0)
225.0
turtle.xcor()

返回turtle的X坐标。

>>> turtle.home()
>>> turtle.left(50)
>>> turtle.forward(100)
>>> turtle.pos()
(64.28,76.60)
>>> print(round(turtle.xcor(), 5))
64.27876
turtle.ycor()

返回turtle的Y坐标。

>>> turtle.home()
>>> turtle.left(60)
>>> turtle.forward(100)
>>> print(turtle.pos())
(50.00,86.60)
>>> print(round(turtle.ycor(), 5))
86.60254
turtle.heading()

返回turtle当前的航向(值取决于turtle模式,请参见 mode()

>>> turtle.home()
>>> turtle.left(67)
>>> turtle.heading()
67.0
turtle.distance(x, y=None)
参数
  • x -- 数字或数字对/矢量或turtle实例

  • y -- 数字中频 x 是个数字,否则 None

返回从turtle到(x,y)、给定向量或给定其他turtle的距离,以turtle步进单位表示。

>>> turtle.home()
>>> turtle.distance(30,40)
50.0
>>> turtle.distance((30,40))
50.0
>>> joe = Turtle()
>>> joe.forward(77)
>>> turtle.distance(joe)
77.0

测量设置

turtle.degrees(fullcircle=360.0)
参数

fullcircle -- 一个数字

设置角度测量单位,即设置整圈的“度数”。默认值为360度。

>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0

Change angle measurement unit to grad (also known as gon,
grade, or gradian and equals 1/100-th of the right angle.)
>>> turtle.degrees(400.0)
>>> turtle.heading()
100.0
>>> turtle.degrees(360)
>>> turtle.heading()
90.0
turtle.radians()

将角度测量单位设置为弧度。相当于 degrees(2*math.pi) .

>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0
>>> turtle.radians()
>>> turtle.heading()
1.5707963267948966

笔控制

绘图状态

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

把笔往下拉——移动时画画。

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

把笔向上拉——移动时不画图。

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

width -- 一个正数

将线条粗细设置为 宽度 或者归还它。如果resizemode设置为“auto”,并且套头衫形状是多边形,则该多边形将以相同的线条粗细绘制。如果没有给定参数,则返回当前Pensize。

>>> turtle.pensize()
1
>>> turtle.pensize(10)   # from here on lines of width 10 are drawn
turtle.pen(pen=None, **pendict)
参数
  • pen -- 包含以下部分或全部键的字典

  • pendict -- 一个或多个关键字参数,其关键字如下所列

使用以下键/值对在“笔字典”中返回或设置笔的属性:

  • “显示”:真/假

  • “PenDown”:真/假

  • “pencolor”:颜色字符串或颜色元组

  • “FillColor”:颜色字符串或颜色元组

  • “pensize”:正数

  • “速度”:数值在0到10之间

  • “resizemode”:“auto”或“user”或“noresize”

  • “StretchFactor”:(正数,正数)

  • “轮廓”:正数

  • “倾斜”:数字

此字典可以用作后续调用的参数 pen() 恢复以前的笔状态。此外,这些属性中的一个或多个可以作为关键字参数提供。这可用于在一条语句中设置多个笔属性。

>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
>>> sorted(turtle.pen().items())
[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),
 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
 ('shearfactor', 0.0), ('shown', True), ('speed', 9),
 ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]
>>> penstate=turtle.pen()
>>> turtle.color("yellow", "")
>>> turtle.penup()
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]
>>> turtle.pen(penstate, fillcolor="green")
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
turtle.isdown()

返回 True 如果钢笔掉了, False 如果它上升了。

>>> turtle.penup()
>>> turtle.isdown()
False
>>> turtle.pendown()
>>> turtle.isdown()
True

色彩控制

turtle.pencolor(*args)

返回或设置铅笔颜色。

允许四种输入格式:

pencolor()

以颜色规范字符串或元组的形式返回当前铅笔颜色(参见示例)。可以用作其他颜色/铅笔颜色/填充颜色调用的输入。

pencolor(colorstring)

设置铅笔 色串 ,它是tk颜色规格字符串,例如 "red""yellow""#33cc8c" .

pencolor((r, g, b))

将Pencolor设置为由元组表示的RGB颜色 rgb . 每一个 rgb 必须在0..ColorMode范围内,其中ColorMode为1.0或255(请参见 colormode()

pencolor(r, g, b)

将Pencolor设置为由表示的RGB颜色 rgb . 每一个 rgb 必须在0..ColorMode范围内。

如果高领形状是多边形,则该多边形的轮廓将使用新设置的铅笔颜色绘制。

 >>> colormode()
 1.0
 >>> turtle.pencolor()
 'red'
 >>> turtle.pencolor("brown")
 >>> turtle.pencolor()
 'brown'
 >>> tup = (0.2, 0.8, 0.55)
 >>> turtle.pencolor(tup)
 >>> turtle.pencolor()
 (0.2, 0.8, 0.5490196078431373)
 >>> colormode(255)
 >>> turtle.pencolor()
 (51.0, 204.0, 140.0)
 >>> turtle.pencolor('#32c18f')
 >>> turtle.pencolor()
 (50.0, 193.0, 143.0)
turtle.fillcolor(*args)

返回或设置填充颜色。

允许四种输入格式:

fillcolor()

返回当前的fillColor作为颜色规范字符串,可能是元组格式(参见示例)。可以用作其他颜色/铅笔颜色/填充颜色调用的输入。

fillcolor(colorstring)

将FillColor设置为 色串 ,它是tk颜色规格字符串,例如 "red""yellow""#33cc8c" .

fillcolor((r, g, b))

将FillColor设置为由元组表示的RGB颜色 rgb . 每一个 rgb 必须在0..ColorMode范围内,其中ColorMode为1.0或255(请参见 colormode()

fillcolor(r, g, b)

将FillColor设置为由表示的RGB颜色 rgb . 每一个 rgb 必须在0..ColorMode范围内。

如果高领形状是多边形,则该多边形的内部将使用新设置的FillColor绘制。

 >>> turtle.fillcolor("violet")
 >>> turtle.fillcolor()
 'violet'
 >>> turtle.pencolor()
 (50.0, 193.0, 143.0)
 >>> turtle.fillcolor((50, 193, 143))  # Integers, not floats
 >>> turtle.fillcolor()
 (50.0, 193.0, 143.0)
 >>> turtle.fillcolor('#ffffff')
 >>> turtle.fillcolor()
 (255.0, 255.0, 255.0)
turtle.color(*args)

返回或设置铅笔颜色和填充颜色。

允许多种输入格式。它们使用0到3个参数,如下所示:

color()

将当前Pencolor和当前FillColor作为一对颜色规范字符串或元组返回,返回方式为 pencolor()fillcolor() .

color(colorstring), color((r,g,b)), color(r,g,b)

输入为 pencolor() ,将fillColor和pencolor都设置为给定值。

color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))

相当于 pencolor(colorstring1)fillcolor(colorstring2) 类似地,如果使用其他输入格式。

如果高领毛衣形状是多边形,则该多边形的轮廓和内部将用新设置的颜色绘制。

 >>> turtle.color("red", "green")
 >>> turtle.color()
 ('red', 'green')
 >>> color("#285078", "#a0c8f0")
 >>> color()
 ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))

另请参见:屏幕方法 colormode() .

填满

turtle.filling()

返回填充状态 (True 如果填充, False 否则)。

 >>> turtle.begin_fill()
 >>> if turtle.filling():
 ...    turtle.pensize(5)
 ... else:
 ...    turtle.pensize(3)
turtle.begin_fill()

在绘制要填充的形状之前调用。

turtle.end_fill()

填充上次调用后绘制的形状 begin_fill() .

是否填充自相交多边形或多个形状的重叠区域取决于操作系统图形、重叠类型和重叠数。例如,上面的海龟星可能全部是黄色,也可能有一些白色区域。

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

更多绘图控件

turtle.reset()

从屏幕上删除turtle的图形,将turtle重新居中,并将变量设置为默认值。

>>> turtle.goto(0,-22)
>>> turtle.left(100)
>>> turtle.position()
(0.00,-22.00)
>>> turtle.heading()
100.0
>>> turtle.reset()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
turtle.clear()

从屏幕上删除turtle的图纸。不要移动turtle。turtle的状态和位置以及其他turtle的图纸不受影响。

turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))
参数
  • arg -- 要写入到高台屏幕的对象

  • move -- 对/错

  • align -- “左”、“中”或“右”字符串之一

  • font -- 三重(fontname、fontsize、fonttype)

写入文本-的字符串表示形式 arg -在当前的乌龟位置,根据 对齐 (“左”、“中”或“右”)和给定字体。如果 move 为true,则钢笔将移动到文本的右下角。默认情况下, moveFalse

>>> turtle.write("Home = ", True, align="center")
>>> turtle.write((0,0), True)

turtle状态

能见度

turtle.hideturtle()
turtle.ht()

让turtle隐形。这是一个好主意,当你正在做一些复杂的绘图,因为隐藏turtle明显加快了绘图。

>>> turtle.hideturtle()
turtle.showturtle()
turtle.st()

使turtle可见。

>>> turtle.showturtle()
turtle.isvisible()

返回 True 如果有turtle出现, False 如果它被隐藏了。

>>> turtle.hideturtle()
>>> turtle.isvisible()
False
>>> turtle.showturtle()
>>> turtle.isvisible()
True

外观

turtle.shape(name=None)
参数

name -- 有效形状名的字符串

将turtle形状设置为给定形状 name 或者,如果未指定名称,则返回当前形状的名称。形状与 name 必须存在于Turtlescreen的形状字典中。最初有以下多边形形状:“箭头”、“turtle”、“圆”、“正方形”、“三角形”、“经典”。要了解如何处理形状,请参见屏幕方法 register_shape() .

>>> turtle.shape()
'classic'
>>> turtle.shape("turtle")
>>> turtle.shape()
'turtle'
turtle.resizemode(rmode=None)
参数

rmode -- 字符串“auto”、“user”、“noresize”之一

将resizemode设置为以下值之一:“auto”、“user”、“noresize”。如果 rMODE 未给定,返回当前的ResizeMode。不同的ResizeMode具有以下效果:

  • “自动”:适应turtle的外观,与压力值相对应。

  • “用户”:根据StretchFactor和OutlineWidth(Outline)的值调整turtle的外观,该值由 shapesize() .

  • “诺雷西泽”:turtle的外表没有任何变化。

resizemode("user") 由以下人员调用 shapesize() 当与参数一起使用时。

>>> turtle.resizemode()
'noresize'
>>> turtle.resizemode("auto")
>>> turtle.resizemode()
'auto'
turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)
参数
  • stretch_wid -- 正数

  • stretch_len -- 正数

  • outline -- 正数

返回或设置笔的属性x/y-拉伸因子和/或轮廓。将ResizeMode设置为“用户”。如果且仅当ResizeMode设置为“用户”,则turtle将根据其拉伸系数显示拉伸: stretch_wid 是垂直于其方向的拉伸系数, stretch_len 是方向上的拉伸系数, 概述 确定形状轮廓的宽度。

>>> turtle.shapesize()
(1.0, 1.0, 1)
>>> turtle.resizemode("user")
>>> turtle.shapesize(5, 5, 12)
>>> turtle.shapesize()
(5, 5, 12)
>>> turtle.shapesize(outline=8)
>>> turtle.shapesize()
(5, 5, 8)
turtle.shearfactor(shear=None)
参数

shear -- 数字(可选)

设置或返回当前剪切因子。根据给定的剪切系数(剪切角的正切值)剪切套头衫形状。做 not 改变turtle的方向(移动方向)。如果没有给定剪切力:返回当前剪切系数,即剪切角的切线,通过该切线剪切平行于turtle头部的线。

 >>> turtle.shape("circle")
 >>> turtle.shapesize(5,2)
 >>> turtle.shearfactor(0.5)
 >>> turtle.shearfactor()
 0.5
turtle.tilt(angle)
参数

angle -- 一个数字

将高领衫形状旋转 从它当前的倾斜角度,但是 not 改变turtle的方向(移动方向)。

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(30)
>>> turtle.fd(50)
>>> turtle.tilt(30)
>>> turtle.fd(50)
turtle.settiltangle(angle)
参数

angle -- 一个数字

将套头衫形状旋转到指定方向 无论其当前倾斜角度如何。 改变turtle的方向(移动方向)。

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.settiltangle(45)
>>> turtle.fd(50)
>>> turtle.settiltangle(-45)
>>> turtle.fd(50)

3.1 版后已移除.

turtle.tiltangle(angle=None)
参数

angle -- 数字(可选)

设置或返回当前倾斜角度。如果给定了角度,则将套头衫旋转到角度指定的方向,而不考虑当前的倾斜角度。做 not 改变turtle的方向(移动方向)。如果没有给定角度:返回当前的倾斜角度,也就是说,turtle形状的方向和它的头部(它的运动方向)之间的角度。

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(45)
>>> turtle.tiltangle()
45.0
turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)
参数
  • t11 -- 数字(可选)

  • t12 -- 数字(可选)

  • t21 -- 数字(可选)

  • t12 -- 数字(可选)

设置或返回turtle形状的当前转换矩阵。

如果没有给定任何矩阵元素,则将转换矩阵作为4个元素的元组返回。否则,设置给定元素并根据由第一行t11、t12和第二行t21、t22组成的矩阵变换乌龟形状。行列式T11 * t22 - t12 * T21不能为零,否则会引发错误。根据给定的矩阵修改拉伸因子、剪切因子和倾斜度。

>>> turtle = Turtle()
>>> turtle.shape("square")
>>> turtle.shapesize(4,2)
>>> turtle.shearfactor(-0.5)
>>> turtle.shapetransform()
(4.0, -1.0, -0.0, 2.0)
turtle.get_shapepoly()

返回当前形状多边形作为坐标对的元组。这可用于定义新形状或复合形状的组件。

>>> turtle.shape("square")
>>> turtle.shapetransform(4, -1, 0, 2)
>>> turtle.get_shapepoly()
((50, -20), (30, 20), (-50, 20), (-30, -20))

使用事件

turtle.onclick(fun, btn=1, add=None)
参数
  • fun -- 带有两个参数的函数,将使用画布上单击点的坐标调用该函数。

  • btn -- 鼠标按钮的数目,默认为1(鼠标左键)

  • add -- TrueFalse ——如果 True ,将添加新绑定,否则将替换以前的绑定。

束缚 fun 鼠标点击这只turtle上的事件。如果 funNone ,将删除现有绑定。匿名turtle的例子,即程序方式:

>>> def turn(x, y):
...     left(180)
...
>>> onclick(turn)  # Now clicking into the turtle will turn it.
>>> onclick(None)  # event-binding will be removed
turtle.onrelease(fun, btn=1, add=None)
参数
  • fun -- 带有两个参数的函数,将使用画布上单击点的坐标调用该函数。

  • btn -- 鼠标按钮的数目,默认为1(鼠标左键)

  • add -- TrueFalse ——如果 True ,将添加新绑定,否则将替换以前的绑定。

束缚 fun 鼠标按钮释放turtle上的事件。如果 funNone ,将删除现有绑定。

>>> class MyTurtle(Turtle):
...     def glow(self,x,y):
...         self.fillcolor("red")
...     def unglow(self,x,y):
...         self.fillcolor("")
...
>>> turtle = MyTurtle()
>>> turtle.onclick(turtle.glow)     # clicking on turtle turns fillcolor red,
>>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.
turtle.ondrag(fun, btn=1, add=None)
参数
  • fun -- 带有两个参数的函数,将使用画布上单击点的坐标调用该函数。

  • btn -- 鼠标按钮的数目,默认为1(鼠标左键)

  • add -- TrueFalse ——如果 True ,将添加新绑定,否则将替换以前的绑定。

束缚 fun 鼠标移动这只turtle上的事件。如果 funNone ,将删除现有绑定。

备注:turtle上的每一个鼠标移动事件序列前面都有一个鼠标单击事件。

>>> turtle.ondrag(turtle.goto)

随后,点击并拖动turtle会将其在屏幕上移动,从而生成手绘(如果笔已放下)。

特殊龟法

turtle.begin_poly()

开始记录多边形的顶点。当前turtle的位置是多边形的第一个顶点。

turtle.end_poly()

停止记录多边形的顶点。当前turtle位置是多边形的最后一个顶点。这将与第一个顶点连接。

turtle.get_poly()

返回最后记录的多边形。

>>> turtle.home()
>>> turtle.begin_poly()
>>> turtle.fd(100)
>>> turtle.left(20)
>>> turtle.fd(30)
>>> turtle.left(60)
>>> turtle.fd(50)
>>> turtle.end_poly()
>>> p = turtle.get_poly()
>>> register_shape("myFavouriteShape", p)
turtle.clone()

创建并返回具有相同位置、标题和turtle属性的turtle复制。

>>> mick = Turtle()
>>> joe = mick.clone()
turtle.getturtle()
turtle.getpen()

返回turtle对象本身。仅合理使用:作为返回“匿名turtle”的函数:

>>> pet = getturtle()
>>> pet.fd(50)
>>> pet
<turtle.Turtle object at 0x...>
turtle.getscreen()

返回 TurtleScreen turtle正在画的物体。然后可以为该对象调用Turtlescreen方法。

>>> ts = turtle.getscreen()
>>> ts
<turtle._Screen object at 0x...>
>>> ts.bgcolor("pink")
turtle.setundobuffer(size)
参数

size -- 整数或 None

设置或禁用撤消缓冲区。如果 size 为整数,则安装给定大小的空撤消缓冲区。 size 可以撤消的最大海龟动作数。 undo() 方法/函数。如果 sizeNone ,则撤消缓冲区被禁用。

>>> turtle.setundobuffer(42)
turtle.undobufferentries()

返回UndoBuffer中的条目数。

>>> while undobufferentries():
...     undo()

复合形

要使用由多个不同颜色的多边形组成的复合turtle形状,必须使用助手类 Shape 具体如下:

  1. 创建“复合”类型的空形状对象。

  2. 根据需要向此对象添加尽可能多的组件,使用 addcomponent() 方法。

    例如:

    >>> s = Shape("compound")
    >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))
    >>> s.addcomponent(poly1, "red", "blue")
    >>> poly2 = ((0,0),(10,-5),(-10,-5))
    >>> s.addcomponent(poly2, "blue", "red")
    
  3. 现在将形状添加到屏幕的形状列表中并使用它:

    >>> register_shape("myshape", s)
    >>> shape("myshape")
    

注解

这个 Shape 类在内部由 register_shape() 方法不同。应用程序程序员必须处理形状类 only 当使用上面所示的复合形状时!

高台筛/筛网的方法及相应功能

本节中的大多数示例都涉及一个名为 screen .

窗口控制

turtle.bgcolor(*args)
参数

args -- 颜色字符串或0..colormode范围内的三个数字或此类数字的三元组

设置或返回高台屏幕的背景色。

>>> screen.bgcolor("orange")
>>> screen.bgcolor()
'orange'
>>> screen.bgcolor("#800080")
>>> screen.bgcolor()
(128.0, 0.0, 128.0)
turtle.bgpic(picname=None)
参数

picname -- 一个字符串、一个GIF文件的名称或 "nopic"None

设置背景图像或返回当前背景图像的名称。如果 皮克特 是一个文件名,将相应的图像设置为背景。如果 皮克特"nopic" ,删除背景图像(如果存在)。如果 皮克特None ,返回当前背景图像的文件名。::

>>> screen.bgpic()
'nopic'
>>> screen.bgpic("landscape.gif")
>>> screen.bgpic()
"landscape.gif"
turtle.clear()
turtle.clearscreen()

从turtle屏幕上删除所有图纸和所有turtle。将现在为空的Turtlescreen重置为其初始状态:白色背景、无背景图像、无事件绑定和跟踪。

注解

此Turtlescreen方法仅作为全局函数在名称下可用 clearscreen . 全局函数 clear 是从turtle的方法衍生出来的 clear .

turtle.reset()
turtle.resetscreen()

将屏幕上的所有turtle重置为初始状态。

注解

此Turtlescreen方法仅作为全局函数在名称下可用 resetscreen . 全局函数 reset 是从turtle法衍生出来的另一种方法吗? reset .

turtle.screensize(canvwidth=None, canvheight=None, bg=None)
参数
  • canvwidth -- 正整数,画布的新宽度(像素)

  • canvheight -- 正整数,画布的新高度(像素)

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

如果没有给出参数,则返回当前值(canvasWidth、canvasHeight)。否则,调整turtle正在绘制的画布的大小。不要更改绘图窗口。要观察画布的隐藏部分,请使用滚动条。使用此方法,可以使以前在画布外的绘图部分可见。

>>> screen.screensize()
(400, 300)
>>> screen.screensize(2000,1500)
>>> screen.screensize()
(2000, 1500)

例如,寻找一只错误逃脱的turtle;—)

turtle.setworldcoordinates(llx, lly, urx, ury)
参数
  • llx -- 一个数字,画布左下角的X坐标

  • lly -- 一个数字,画布左下角的Y坐标

  • urx -- 一个数字,画布右上角的X坐标

  • ury -- 一个数字,画布右上角的y坐标

设置用户定义的坐标系,必要时切换到“世界”模式。这执行了 screen.reset() . 如果“世界”模式已激活,则所有图形都将根据新坐标重新绘制。

ATTENTION :在用户定义的坐标系中,角度可能会出现扭曲。

>>> screen.reset()
>>> screen.setworldcoordinates(-50,-7.5,50,7.5)
>>> for _ in range(72):
...     left(10)
...
>>> for _ in range(8):
...     left(45); fd(2)   # a regular octagon

动画控件

turtle.delay(delay=None)
参数

delay -- 正整数

设置或返回图形 延迟 以毫秒为单位。(这大约是两次连续画布更新之间的时间间隔。)绘图延迟越长,动画速度越慢。

可选参数:

>>> screen.delay()
10
>>> screen.delay(5)
>>> screen.delay()
5
turtle.tracer(n=None, delay=None)
参数
  • n -- 非负整数

  • delay -- 非负整数

打开/关闭Turtle动画并设置更新图形的延迟。如果 n 给出,只执行第n次常规屏幕更新。(可用于加速复杂图形的绘制。)当不带参数调用时,返回当前存储的n值。第二个参数设置延迟值(请参见 delay()

>>> screen.tracer(8, 25)
>>> dist = 2
>>> for i in range(200):
...     fd(dist)
...     rt(90)
...     dist += 2
turtle.update()

执行高领衫的更新。当跟踪程序关闭时使用。

另见Rawturtle/Turtle方法 speed() .

使用屏幕事件

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

将焦点设置在高台屏幕上(以便收集关键事件)。为了能够传递 listen() 到onclick方法。

turtle.onkey(fun, key)
turtle.onkeyrelease(fun, key)
参数
  • fun -- 没有参数的函数或 None

  • key -- 字符串:键(如“A”)或键符号(如“空格”)。

束缚 fun 键的释放事件。如果 funNone ,将删除事件绑定。备注:为了能够注册关键事件,高领衫必须有焦点。(见方法) listen()

>>> def f():
...     fd(50)
...     lt(60)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
turtle.onkeypress(fun, key=None)
参数
  • fun -- 没有参数的函数或 None

  • key -- 字符串:键(如“A”)或键符号(如“空格”)。

束缚 fun 如果按键,则按键事件键;如果没有按键,则按键事件键。备注:为了能够注册关键事件,高领衫必须有焦点。(见方法) listen()

>>> def f():
...     fd(50)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
turtle.onclick(fun, btn=1, add=None)
turtle.onscreenclick(fun, btn=1, add=None)
参数
  • fun -- 带有两个参数的函数,将使用画布上单击点的坐标调用该函数。

  • btn -- 鼠标按钮的数目,默认为1(鼠标左键)

  • add -- TrueFalse ——如果 True ,将添加新绑定,否则将替换以前的绑定。

束缚 fun 单击此屏幕上的事件。如果 funNone ,将删除现有绑定。

名为的TurtleScreen实例的示例 screen 和名为的Turtle实例 turtle

>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will
>>>                             # make the turtle move to the clicked point.
>>> screen.onclick(None)        # remove event binding again

注解

此Turtlescreen方法仅作为全局函数在名称下可用 onscreenclick . 全局函数 onclick 是从turtle法衍生出来的另一种方法吗? onclick .

turtle.ontimer(fun, t=0)
参数
  • fun -- 没有参数的函数

  • t -- 数字>0

安装一个调用 fun 之后 t 毫秒。

>>> running = True
>>> def f():
...     if running:
...         fd(50)
...         lt(60)
...         screen.ontimer(f, 250)
>>> f()   ### makes the turtle march around
>>> running = False
turtle.mainloop()
turtle.done()

启动事件循环-调用Tkinter的主循环函数。必须是Turtle图形程序中的最后一条语句。必须 not 如果脚本在空闲的-n模式(无子进程)中运行,则使用该脚本,以交互使用turtle图形。::

>>> screen.mainloop()

输入法

turtle.textinput(title, prompt)
参数
  • title -- string

  • prompt -- string

弹出一个输入字符串的对话框窗口。参数标题是对话框窗口的标题,提示是一个主要描述输入什么信息的文本。返回字符串输入。如果取消对话框,则返回 None . ::

>>> screen.textinput("NIM", "Name of first player:")
turtle.numinput(title, prompt, default=None, minval=None, maxval=None)
参数
  • title -- string

  • prompt -- string

  • default -- 数字(可选)

  • minval -- 数字(可选)

  • maxval -- 数字(可选)

弹出一个用于输入数字的对话框窗口。标题是对话框窗口的标题,提示是一个主要描述要输入的数字信息的文本。默认值:默认值,minval:输入的最小值,maxval:输入的最大值数字输入必须在minval范围内。如果给出这些值,则为MaxVal。如果没有,将发出提示,对话框将保持打开状态以进行更正。返回数字输入。如果取消对话框,则返回 None . ::

>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)

设置和特殊方法

turtle.mode(mode=None)
参数

mode -- 字符串“Standard”、“Logo”或“World”之一

设置turtle模式(“标准”、“标志”或“世界”)并执行重置。如果没有给出模式,则返回当前模式。

“标准”模式与旧模式兼容 turtle . “logo”模式与大多数turtle图案兼容。“世界”模式使用用户定义的“世界坐标”。 敬告 :在此模式下,如果 x/y 单位比率不等于1。

模式

初始turtle航向

正角度

“标准”

右边(东)

逆时针

“LOGO”

向上(北)

顺时针方向的

>>> mode("logo")   # resets turtle heading to north
>>> mode()
'logo'
turtle.colormode(cmode=None)
参数

cmode -- 值1.0或255之一

返回颜色模式或将其设置为1.0或255。随后 rgb 颜色三倍值必须在0范围内。cMODE .

>>> screen.colormode(1)
>>> turtle.pencolor(240, 160, 80)
Traceback (most recent call last):
     ...
TurtleGraphicsError: bad color sequence: (240, 160, 80)
>>> screen.colormode()
1.0
>>> screen.colormode(255)
>>> screen.colormode()
255
>>> turtle.pencolor(240,160,80)
turtle.getcanvas()

把这个高领毛衣的画布还给我。对于知道如何处理tkinter画布的内部人员很有用。

>>> cv = screen.getcanvas()
>>> cv
<turtle.ScrolledCanvas object ...>
turtle.getshapes()

返回当前所有可用turtle形状的名称列表。

>>> screen.getshapes()
['arrow', 'blank', 'circle', ..., 'turtle']
turtle.register_shape(name, shape=None)
turtle.addshape(name, shape=None)

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

  1. name 是GIF文件的名称,并且 形状None :安装相应的图像形状。::

    >>> screen.register_shape("turtle.gif")
    

    注解

    图像形状 转动turtle时旋转,这样它们就不会显示turtle的航向!

  2. name 是任意字符串,并且 形状 是一组成对的坐标:安装相应的多边形形状。

    >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
    
  3. name 是任意字符串,形状是(复合) Shape 对象:安装相应的复合形状。

将turtle形状添加到Turtlescreen的形状列表中。发出命令时只能使用未注册的形状 shape(shapename) .

turtle.turtles()

返回屏幕上的turtle列表。

>>> for turtle in screen.turtles():
...     turtle.color("red")
turtle.window_height()

返回turtle窗的高度。::

>>> screen.window_height()
480
turtle.window_width()

返回turtle窗的宽度。::

>>> screen.window_width()
640

特定于筛选的方法,而不是从Turtlescreen继承的方法

turtle.bye()

关闭“Turtlegraphics”窗口。

turtle.exitonclick()

绑定 bye() 方法在屏幕上单击鼠标。

如果配置字典中的“使用空闲”值为 False (默认值),也输入mainloop。备注:如果闲置 -n 使用了开关(无子进程),此值应设置为 True 在里面 turtle.cfg . 在这种情况下,idle自己的mainloop对于客户机脚本也是活动的。

turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])

设置主窗口的大小和位置。参数的默认值存储在配置字典中,可以通过 turtle.cfg 文件。

参数
  • width -- 如果是整数,则为像素大小,如果是浮点,则为屏幕的一部分;默认值为屏幕的50%。

  • height -- 如果是整数,则以像素为单位的高度,如果是浮点,则为屏幕的一部分;默认值为屏幕的75%

  • startx -- 如果为正,则从屏幕左边缘开始以像素为单位的位置,如果为负,则从右边缘开始,如果 None ,水平居中窗口

  • starty -- 如果为正,则从屏幕上边缘开始以像素为单位的位置,如果为负,则从下边缘开始,如果 None ,垂直居中窗口

>>> screen.setup (width=200, height=200, startx=0, starty=0)
>>>              # sets window to 200x200 pixels, in upper left of screen
>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)
>>>              # sets window to 75% of screen by 50% of screen and centers
turtle.title(titlestring)
参数

titlestring -- 显示在Turtle图形窗口标题栏中的字符串

将Turtle窗口的标题设置为 字串 .

>>> screen.title("Welcome to the turtle zoo!")

公共课

class turtle.RawTurtle(canvas)
class turtle.RawPen(canvas)
参数

canvas -- 一 tkinter.Canvas ,A ScrolledCanvas 或A TurtleScreen

创造一只turtle。turtle有上述所有方法“turtle/生皮方法”。

class turtle.Turtle

rawturtle的子类具有相同的接口,但使用默认值 Screen 首次需要时自动创建的对象。

class turtle.TurtleScreen(cv)
参数

cv -- 一 tkinter.Canvas

提供面向屏幕的方法,如 setbg() 等等,上面描述的。

class turtle.Screen

高脚甲亚纲 four methods added .

class turtle.ScrolledCanvas(master)
参数

master -- 一些包含滚动canvas的tkinter小部件,即添加了滚动条的tkinter画布

在课堂屏幕上使用,它会自动提供一个滚动的画布作为turtle的游乐场。

class turtle.Shape(type_, data)
参数

type_ -- 字符串“polygon”、“image”、“compound”之一

数据结构建模形状。这对 (type_, data) 必须遵守本规范:

type_

data

"polygon"

多边形元组,即坐标对的元组

"image"

图像(此格式仅在内部使用!)

"compound"

None (必须使用 addcomponent() 方法)

addcomponent(poly, fill, outline=None)
参数
  • poly -- 多边形,即一对数的元组

  • fill -- 一种颜色 poly 将填充

  • outline -- 多边形轮廓的颜色(如果给定)

例子:

>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
>>> s = Shape("compound")
>>> s.addcomponent(poly, "red", "blue")
>>> # ... add more components and then use register_shape()

复合形 .

class turtle.Vec2D(x, y)

二维向量类,用作实现turtle图形的助手类。可能对turtle图形程序也很有用。从元组派生,所以向量是一个元组!

提供(用于) ab 向量, k 数字):

  • a + b 向量加法

  • a - b 矢量减法

  • a * b 内积

  • k * aa * k 乘标量

  • abs(a) A的绝对值

  • a.rotate(angle) 旋转

帮助和配置

如何使用帮助

screen和turtle类的公共方法通过docstring被广泛记录。因此,这些可以通过python帮助工具用作联机帮助:

  • 当使用idle时,工具提示显示在函数/方法调用中键入的docstrings的签名和第一行。

  • 调用 help() 在方法或函数上,显示docstrings::

    >>> help(Screen.bgcolor)
    Help on method bgcolor in module turtle:
    
    bgcolor(self, *args) unbound turtle.Screen method
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
    
          >>> screen.bgcolor("orange")
          >>> screen.bgcolor()
          "orange"
          >>> screen.bgcolor(0.5,0,0.5)
          >>> screen.bgcolor()
          "#800080"
    
    >>> help(Turtle.penup)
    Help on method penup in module turtle:
    
    penup(self) unbound turtle.Turtle method
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        >>> turtle.penup()
    
  • 从方法派生的函数的DocString具有修改后的形式:

    >>> help(bgcolor)
    Help on function bgcolor in module turtle:
    
    bgcolor(*args)
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
        Example::
    
          >>> bgcolor("orange")
          >>> bgcolor()
          "orange"
          >>> bgcolor(0.5,0,0.5)
          >>> bgcolor()
          "#800080"
    
    >>> help(penup)
    Help on function penup in module turtle:
    
    penup()
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        Example:
        >>> penup()
    

这些修改过的docstring与导入时从方法派生的函数定义一起自动创建。

将docstring翻译成不同语言

有一个实用程序可以创建一个字典,字典的键是方法名,其值是类screen和turtle的公共方法的docstring。

turtle.write_docstringdict(filename='turtle_docstringdict')
参数

filename -- 用作文件名的字符串

创建docstring字典并将其写入具有给定文件名的python脚本。必须显式调用此函数(Turtle图形类不使用此函数)。docstring字典将写入python脚本 {filename}.py . 它旨在作为将docstring翻译成不同语言的模板。

如果你(或你的学生)想使用 turtle 使用您的母语在线帮助,您必须翻译docstrings并将结果文件保存为例如。 turtle_docstringdict_german.py .

如果您在 turtle.cfg 文件此词典将在导入时读取,并将替换原始的英文文档字符串。

写作时,有德语和意大利语的docstring字典。(请致电glingl@aon.at。)

如何配置屏幕和turtle

内置的默认配置模仿旧turtle模块的外观和行为,以保持与它的最佳兼容性。

如果您想使用不同的配置,更好地反映本模块的功能,或者更好地满足您的需求,例如在课堂上使用,您可以准备一个配置文件。 turtle.cfg 将在导入时读取,并根据其设置修改配置。

内置配置将对应于以下turtle.cfg::

width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False

所选条目的简短说明:

  • 前四行对应于 Screen.setup() 方法。

  • 第5行和第6行对应于方法的参数 Screen.screensize() .

  • 形状 可以是任何内置形状,例如:箭头、turtle等。有关详细信息,请尝试 help(shape) .

  • 如果你想不使用填充颜色(即使turtle透明),你必须写 fillcolor = "" (但是所有非空字符串在cfg文件中不能有引号)。

  • 如果你想反映龟的状态,你必须使用 resizemode = auto .

  • 如果你设置 language = italian DocStringDict turtle_docstringdict_italian.py 将在导入时加载(如果导入路径上存在,例如,与 turtle .

  • 参赛作品 turtle范例克里文 定义这些对象出现在docstrings中时的名称。将docStrings方法转换为函数docStrings将从docStrings中删除这些名称。

  • using_IDLE 设置为 True 如果您经常使用idle及其-n开关(“无子进程”)。这将阻止 exitonclick() 进入主循环。

可以有一个 turtle.cfg 文件在目录中 turtle 存储在当前工作目录中,另外一个存储在当前工作目录中。后者将覆盖第一个设置。

这个 Lib/turtledemo 目录包含 turtle.cfg 文件。您可以作为一个例子来研究它,并在运行演示时看到它的效果(最好不要在演示查看器中)。

turtledemo ---演示脚本

这个 turtledemo 包中包含一组演示脚本。可以使用提供的演示查看器运行和查看这些脚本,如下所示:

python -m turtledemo

或者,您可以单独运行演示脚本。例如:

python -m turtledemo.bytedesign

这个 turtledemo 包目录包含:

  • 演示阅读器 __main__.py 它可以用来查看脚本的源代码并同时运行它们。

  • 多个脚本演示了 turtle 模块。可以通过示例菜单访问示例。它们也可以独立运行。

  • A turtle.cfg 文件,作为如何写入和使用此类文件的示例。

演示脚本包括:

名字

描述

特征

字节设计

复杂的经典turtle图案

tracer(), delay, update()

混乱

图Verhulst动力学表明,计算机的计算有时会产生与常识预期相反的结果。

世界坐标

时钟

显示计算机时间的模拟时钟

turtle当钟的指针,奥蒂默

混色器

R、G、B实验

ondrag()

森林

3宽第一棵树

随机化

分形曲线

希尔伯特和科赫曲线

递归

林登迈耶

民族数学(印度科拉姆)

L-系统

minimal_hanoi

河內之塔

河内盘中的矩形turtle(形状,形状尺寸)

尼姆

用三堆木棍对着电脑玩经典的尼姆游戏。

作为动画的turtle,事件驱动(鼠标、键盘)

油漆

超简约绘图程序

onclick()

和平

初级的

turtle:外观和动画

彭罗斯

用风筝和飞镖不定期铺切片

stamp()

planet_and_moon

引力系统模拟

复合形状, Vec2D

round_dance

跳舞的turtle向相反的方向旋转

复合形状,复制形状大小,倾斜,获取形状多边形,更新

sorting_animate

不同排序方法的可视化演示

简单排列,随机化

A(图形)宽度优先树(使用生成器)

clone()

two_canvases

简单设计

两幅油画上的turtle

维基百科

维基百科关于turtle图形的文章中的一个模式

clone(), undo()

阴阳

另一个基本例子

circle()

玩得高兴!

自python 2.6以来的更改

  • 方法 Turtle.tracer(), Turtle.window_width() and Turtle.window_height() have been eliminated. Methods with these names and functionality are now available only as methods of Screen. The functions derived from these remain available. (In fact already in Python 2.6 these methods were merely duplications of the corresponding TurtleScreen/Screen -方法。

  • 方法 Turtle.fill() 已经被淘汰。行为 begin_fill()end_fill() 有点变化:现在每个填充过程都必须用 end_fill() 调用。

  • 一种方法 Turtle.filling() 已添加。它返回一个布尔值: True 如果正在进行填充过程, False 否则。这种行为对应于 fill() 在python 2.6中不带参数调用。

自python 3.0以来的更改

  • 方法 Turtle.shearfactor()Turtle.shapetransform()Turtle.get_shapepoly() 已添加。因此,现在可以对turtle形状进行全范围的规则线性变换。 Turtle.tiltangle() 已经在功能上得到了增强:现在可以使用它来获取或设置倾斜角度。 Turtle.settiltangle() 已弃用。

  • 方法 Screen.onkeypress() 已作为补充添加到 Screen.onkey() 它实际上将动作绑定到keyrease事件。因此,后者有一个别名: Screen.onkeyrelease() .

  • 方法 Screen.mainloop() 已添加。因此,当只处理屏幕和turtle对象时,不能另外导入 mainloop() 不再。

  • 增加了两种输入法 Screen.textinput()Screen.numinput() . 这些弹出式输入对话框分别返回字符串和数字。

  • 两个示例脚本 tdemo_nim.pytdemo_round_dance.py 已添加到 Lib/turtledemo 目录。