24.5. turtle — Tk 的 Turtle 图形

24.5.1. Introduction

turtle 图形是一种向孩子介绍编程的流行方式。它是 Wally Feurzig 和 Seymour Papert 在 1966 年开发的原始徽标编程语言的一部分。

想象一下,一只turtle 在 x-y 平面中从(0,0)开始。在import turtle之后,向其发送turtle.forward(15)命令,它沿其面对的方向移动(在屏幕上!)15 个像素,并随其移动绘制一条线。给它命令turtle.right(25),它顺时针旋转 25 度。

pass将这些命令和类似命令组合在一起,可以轻松绘制复杂的形状和图片。

turtle模块是从 Python 标准发行版到 Python 2.5 版本的同名模块的扩展重新实现。

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

turtle 模块以面向对象和面向过程的方式提供turtle 图形基元。由于它使用Tkinter作为基础图形,因此需要安装有 Tk 支持的 Python 版本。

面向对象的接口本质上使用两个两类:

  • TurtleScreen类将图形窗口定义为绘图 turtle 的运动场。其构造函数需要Tkinter.CanvasScrolledCanvas作为参数。当turtle用作某些应用程序的一部分时,应使用它。

函数Screen()返回TurtleScreen子类的单例对象。当turtle用作制作图形的独立工具时,应使用此Function。作为单例对象,无法从其类继承。

TurtleScreen/Screen 的所有方法也都作为函数存在,即作为面向过程的界面的一部分。

  • RawTurtle(别名:RawPen)定义了在TurtleScreen上绘制的 Turtle 对象。它的构造函数需要一个 Canvas,ScrolledCanvas 或 TurtleScreen 作为参数,因此 RawTurtle 对象知道在哪里绘制。

从 RawTurtle 派生的是子类Turtle(别名:Pen),该子类借鉴了自动创建的Screen实例(如果尚不存在)。

RawTurtle/Turtle 的所有方法也都作为函数存在,即是面向过程的界面的一部分。

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

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

Note

在以下文档中,给出了函数的参数列表。当然,方法具有附加的第一个参数* self *,此处将其Ellipsis。

24.5.2. 可用的 Turtle 和 Screen 方法概述

24.5.2.1. turtle 法

backward() | bk() | back()

right() | rt()

left() | lt()

goto() | setpos() | setposition()

setx()

sety()

setheading() | seth()

home()

circle()

dot()

stamp()

clearstamp()

clearstamps()

undo()

speed()

towards()

xcor()

ycor()

heading()

distance()

radians()

penup() | pu() | up()

pensize() | width()

pen()

isdown()

pencolor()

fillcolor()

begin_fill()

end_fill()

clear()

write()

hideturtle() | ht()

isvisible()

resizemode()

shapesize() | turtlesize()

settiltangle()

tiltangle()

tilt()

onrelease()

ondrag()

mainloop() | done()

end_poly()

get_poly()

clone()

getturtle() | getpen()

getscreen()

setundobuffer()

undobufferentries()

tracer()

window_width()

window_height()

24.5.2.2. TurtleScreen/Screen 的方法

bgpic()

clear() | clearscreen()

reset() | resetscreen()

screensize()

setworldcoordinates()

tracer()

update()

onkey()

onclick() | onscreenclick()

ontimer()

  • 设置和特殊方法

colormode()

getcanvas()

getshapes()

register_shape() | addshape()

turtles()

window_height()

window_width()

  • 特定于屏幕的方法

exitonclick()

setup()

title()

24.5.3. RawTurtle/Turtle 的方法和相应Function

本节中的大多数示例都引用了一个名为turtle的 Turtle 实例。

24.5.3.1. Turtle motion

  • turtle. forward(距离)
  • turtle. fd(距离)
      • Parameters

      • 距离 –一个数字(整数或浮点数)

沿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(距离)
  • turtle. bk(距离)
  • turtle. backward(距离)
      • Parameters

      • 距离 –一个数字

向后移动turtle* distance *,与turtle 前进的方向相反。不要改变turtle 的方向。

>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
>>> turtle.position()
(-30.00,0.00)
  • turtle. right(* angle *)
  • turtle. rt(* angle *)
      • Parameters

      • angle –一个数字(整数或浮点数)

角度单位向右转turtle。 (单位默认为度,但可以passdegrees()radians()Function进行设置。)角度方向取决于turtle 模式,请参见mode()

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
  • turtle. left(* angle *)
  • turtle. lt(* angle *)
      • Parameters

      • angle –一个数字(整数或浮点数)

向左转turtle角度单位。 (单位默认为度,但可以passdegrees()radians()Function进行设置。)角度方向取决于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 *)

      • Parameters

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

如果* y None,则 x *必须是Pair坐标或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 *)
      • Parameters

      • x –一个数字(整数或浮点数)

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

>>> turtle.position()
(0.00,240.00)
>>> turtle.setx(10)
>>> turtle.position()
(10.00,240.00)
  • turtle. sety(* y *)
      • Parameters

      • 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 *)
      • Parameters

      • to_angle –一个数字(整数或浮点数)

将turtle 的方向设置为* to_angle *。以下是一些常用的度数方向:

standard modelogo mode
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 *)

      • Parameters

        • 半径 –一个数字
  • 范围 –一个数字(或None)

  • step –整数(或None)

给定* radius 画一个圆。中心是turtle 左半径单位; 范围 –角度–确定绘制圆的哪一部分。如果没有给出 extent ,则画出整个圆圈。如果 extent 不是一个完整的圆,则圆弧的一个端点是当前笔的位置。如果 radius 为正,则沿逆时针方向绘制弧,否则沿顺时针方向绘制弧。最后,turtle 的方向改变了 extent *的数量。

由于圆是由内接正则多边形近似的,因此* steps *决定了要使用的步骤数。如果未给出,它将自动计算。可用于绘制常规多边形。

>>> 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 *)

      • Parameters

        • size –大于等于 1 的整数(如果有)
  • color –颜色字符串或数字颜色 Tuples

使用* color 绘制一个直径为 size 的圆点。如果未指定 size *,则使用笔号 4 和 2 * pensize 的最大值。

>>> 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 形状的副本标记在画布上。返回该图章的 stamp_id,可pass调用clearstamp(stamp_id)将其删除。
>>> turtle.color("blue")
>>> turtle.stamp()
11
>>> turtle.fd(50)
  • turtle. clearstamp(* stampid *)
      • Parameters

      • stampid –一个整数,必须为上一个stamp()调用的返回值

删除带有给定* stampid *的图章。

>>> 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 *)
      • Parameters

      • n –整数(或None)

删除所有或第一个/最后一个* n 的turtle 邮票。如果 n None,则删除所有图章,如果 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 动作。可用撤消操作的数量由撤消缓冲区的大小决定。
>>> for i in range(4):
...     turtle.fd(50); turtle.lt(80)
...
>>> for i in range(8):
...     turtle.undo()
  • turtle. speed(* speed = None *)
      • Parameters

      • speed – 0..10 范围内的整数或 speedstring(请参见下文)

将turtle 的速度设置为 0..10 范围内的整数。如果未提供任何参数,则返回当前速度。

如果 Importing 的数字大于 10 或小于 0.5,则将 speed 设置为 0.将速度字符串 Map 为 speedvalue,如下所示:

  • "fastest": 0

  • "fast": 10

  • "normal": 6

  • "slow": 3

  • "slowest": 1

从 1 到 10 的速度会强制加快线条绘制和turtle 转向的动画速度。

注意:* speed * = 0 表示* no *动画不会发生。前进/后退使turtle 跳跃,同样,左/右使turtle 立即转弯。

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

24.5.3.2. 告诉 turtle 的状态

  • turtle. position ( )
  • turtle. pos ( )
    • 返回turtle 的当前位置(x,y)(作为Vec2D向量)。
>>> turtle.pos()
(440.00,-0.00)
  • turtle. towards(* x y = None *)

      • Parameters

        • x –数字或数字对/向量或turtle 实例
  • y –如果* x *是数字,则为数字,否则为None

返回从turtle 位置到由(x,y),向量或其他turtle 指定的位置之间的线之间的角度。这取决于turtle 的开始方向,具体取决于模式-“标准” /“世界”或“徽标”)。

>>> 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 turtle.xcor()
64.2787609687
  • turtle. ycor ( )
    • 返回turtle 的 y 坐标。
>>> turtle.home()
>>> turtle.left(60)
>>> turtle.forward(100)
>>> print turtle.pos()
(50.00,86.60)
>>> print turtle.ycor()
86.6025403784
  • turtle. heading ( )
    • 返回turtle 的当前航向(值取决于turtle 模式,请参见mode())。
>>> turtle.home()
>>> turtle.left(67)
>>> turtle.heading()
67.0
  • turtle. distance(* x y = None *)

      • Parameters

        • x –数字或数字对/向量或turtle 实例
  • y –如果* x *是数字,则为数字,否则为None

以turtle 步长单位返回从turtle 到(x,y),给定向量或给定其他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

24.5.3.3. 测量设置

  • turtle. degrees(* fullcircle = 360.0 *)
      • Parameters

      • 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

24.5.3.4. 笔控制

24.5.3.4.1. 绘图状态

  • turtle. pendown ( )

  • turtle. pd ( )

  • turtle. down ( )

    • 向下拉笔–移动时绘图。
  • turtle. penup ( )

  • turtle. pu ( )

  • turtle. up ( )

    • 向上拉笔–移动时不作画。
  • turtle. pensize(* width = None *)

  • turtle. width(* width = None *)

      • Parameters

      • 宽度 –正数

将线宽设置为* width *或将其返回。如果将 resizemode 设置为“ auto”,并且 turtleshape 是多边形,则将以相同的线宽绘制该多边形。如果未提供任何参数,则返回当前的 pensize。

>>> turtle.pensize()
1
>>> turtle.pensize(10)   # from here on lines of width 10 are drawn
  • turtle. pen(* pen = None ** pendict *)

      • Parameters

        • pen –具有下面列出的部分或全部键的字典
  • pendict –使用以下列出的关键字作为关键字的一个或多个关键字参数

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

  • "shown": True/False

  • "pendown": True/False

  • “ pencolor”:彩色字符串或彩色 Tuples

  • “ fillcolor”:彩色字符串或彩色 Tuples

  • “笔号”:正数

  • “速度”:范围为 0..10 的数字

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

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

  • “大纲”:正数

  • "tilt": number

该字典可用作后续调用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'),
 ('shown', True), ('speed', 9), ('stretchfactor', (1, 1)), ('tilt', 0)]
>>> penstate=turtle.pen()
>>> turtle.color("yellow", "")
>>> turtle.penup()
>>> sorted(turtle.pen().items())
[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow'),
 ('pendown', False), ('pensize', 10), ('resizemode', 'noresize'),
 ('shown', True), ('speed', 9), ('stretchfactor', (1, 1)), ('tilt', 0)]
>>> turtle.pen(penstate, fillcolor="green")
>>> sorted(turtle.pen().items())
[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red'),
 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
 ('shown', True), ('speed', 9), ('stretchfactor', (1, 1)), ('tilt', 0)]
  • turtle. isdown ( )
    • 如果笔向下,则返回True;如果笔向上,则返回False
>>> turtle.penup()
>>> turtle.isdown()
False
>>> turtle.pendown()
>>> turtle.isdown()
True

24.5.3.4.2. 色彩控制

  • turtle. pencolor(** args *)
    • 返回或设置笔色。

允许使用四种 Importing 格式:

  • pencolor()

    • 返回当前的 pencolor 作为颜色说明字符串或 Tuples(请参见示例)。可用作另一种颜色/色彩/填充颜色的 Importing。

    • pencolor(colorstring)

      • 将 pencolor 设置为* colorstring *,这是 Tk 颜色规范字符串,例如"red""yellow""#33cc8c"
    • pencolor((r, g, b))

      • 将 pencolor 设置为* r g b *Tuples 表示的 RGB 颜色。 * r g b *中的每一个都必须在 0..colormode 范围内,其中 colormode 是 1.0 或 255(请参阅colormode())。
    • pencolor(r, g, b)

      Note

将 pencolor 设置为* r g b *表示的 RGB 颜色。 * r g b *每个都必须在 0..colormode 范围内。

如果 turtleshape 是多边形,则使用新设置的 pencolor 绘制该多边形的轮廓。

>>> 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, 204, 140)
>>> turtle.pencolor('#32c18f')
>>> turtle.pencolor()
(50, 193, 143)
  • turtle. fillcolor(** args *)
    • 返回或设置填充颜色。

允许使用四种 Importing 格式:

  • fillcolor()

    • 返回当前的 fillcolor 作为颜色说明字符串,可能是 Tuples 格式(请参见示例)。可用作另一种颜色/色彩/填充颜色的 Importing。

    • fillcolor(colorstring)

      • 将 fillcolor 设置为* colorstring *,这是 Tk 颜色规范字符串,例如"red""yellow""#33cc8c"
    • fillcolor((r, g, b))

      • 将 fillcolor 设置为* r g b *Tuples 表示的 RGB 颜色。 * r g b *中的每一个都必须在 0..colormode 范围内,其中 colormode 是 1.0 或 255(请参阅colormode())。
    • fillcolor(r, g, b)

      Note

将 fillcolor 设置为* r g b *表示的 RGB 颜色。 * r g b *每个都必须在 0..colormode 范围内。

如果 turtleshape 是多边形,则使用新设置的 fillcolor 绘制该多边形的内部。

>>> turtle.fillcolor("violet")
>>> turtle.fillcolor()
'violet'
>>> col = turtle.pencolor()
>>> col
(50, 193, 143)
>>> turtle.fillcolor(col)
>>> turtle.fillcolor()
(50, 193, 143)
>>> turtle.fillcolor('#ffffff')
>>> turtle.fillcolor()
(255, 255, 255)
  • turtle. color(** args *)
    • 返回或设置 pencolor 和 fillcolor。

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

  • color()

    • pencolor()fillcolor()返回的Pair颜色规格字符串或 Tuples 的形式返回当前的 pencolor 和当前的 fillcolor。

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

      • pencolor()一样 Importing,将 fillcolor 和 pencolor 都设置为给定值。
    • color(colorstring1, colorstring2) , color((r1,g1,b1), (r2,g2,b2))

      Note

等效于pencolor(colorstring1)fillcolor(colorstring2),如果使用其他 Importing 格式,则类似。

如果 turtleshape 是多边形,则使用新设置的颜色绘制该多边形的轮廓和内部。

>>> turtle.color("red", "green")
>>> turtle.color()
('red', 'green')
>>> color("#285078", "#a0c8f0")
>>> color()
((40, 80, 120), (160, 200, 240))

另请参阅:屏幕方法colormode()

24.5.3.4.3. Filling

  • turtle. fill(* flag *)
      • Parameters

      • flag –正确/错误(或分别为 1/0)

在绘制要填充的形状之前,先致电fill(True),完成后致电fill(False)。不带参数使用时:返回 fillstate(如果为_3,则为False,否则为_)。

>>> turtle.fill(True)
>>> for _ in range(3):
...    turtle.forward(100)
...    turtle.left(120)
...
>>> turtle.fill(False)
  • turtle. begin_fill ( )

    • 在绘制要填充的形状之前调用。等效于fill(True)
  • turtle. end_fill ( )

    • 填充上一次调用begin_fill()之后绘制的形状。等效于fill(False)
>>> turtle.color("black", "red")
>>> turtle.begin_fill()
>>> turtle.circle(80)
>>> turtle.end_fill()

24.5.3.4.4. 更多绘图控制

  • 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”)*)

      • Parameters

        • arg –要写入 TurtleScreen 的对象
  • 移动 –对/错

  • align –字符串“ left”,“ center”或“ right”之一

  • font –三 Tuples(字体名称,字体大小,字体类型)

根据* align (“左”,“中心”或右”)并使用给定的字体,在当前turtle 位置写文本- arg 的字符串表示形式,如果 move 为 true,则移动笔到文本的右下角。默认情况下, move *为False

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

24.5.3.5. turtle 状态

24.5.3.5.1. Visibility

  • turtle. hideturtle ( )
  • turtle. ht ( )
    • 使turtle 不可见。在您进行一些复杂绘图时,这样做是个好主意,因为隐藏turtle 可以明显地加快绘图速度。
>>> turtle.hideturtle()
  • turtle. showturtle ( )
  • turtle. st ( )
    • 使turtle 可见。
>>> turtle.showturtle()
  • turtle. isvisible ( )
    • 如果显示了 Turtle,则返回True;如果隐藏,则返回False
>>> turtle.hideturtle()
>>> turtle.isvisible()
False
>>> turtle.showturtle()
>>> turtle.isvisible()
True

24.5.3.5.2. Appearance

  • turtle. shape(* name = None *)
      • Parameters

      • name –一个有效的 shapename 字符串

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

>>> turtle.shape()
'classic'
>>> turtle.shape("turtle")
>>> turtle.shape()
'turtle'
  • turtle. resizemode(* rmode = None *)
      • Parameters

      • rmode –字符串“ auto”,“ user”,“ noresize”之一

将 resizemode 设置为以下值之一:“ auto”,“ user”,“ noresize”。如果未提供* rmode *,则返回当前的 resizemode。不同的调整大小模式具有以下效果:

  • “自动”:调整turtle 的外观,使其与 pensize 的值相对应。

  • “用户”:根据shapesize()设置的 stretchfactor 和 outlinewidth(轮廓)值调整turtle 的外观。

  • “无大小”:不会适应turtle 的外观。

当与参数一起使用时,shapesize()调用 resizemode(“ user”)。

>>> 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 *)

      • Parameters

        • stretch_wid –正数
  • stretch_len –正数

  • 概述 –正数

返回或设置笔的属性 x/y-stretchfactors 和/或轮廓。将 resizemode 设置为“ user”。当且仅当 resizemode 设置为“ user”时,turtle 才会根据其拉伸因子显示拉伸:* stretch_wid 是垂直于其方向的拉伸因子, stretch_len 是其方向的拉伸因子, outline *确定宽度形状的轮廓。

>>> turtle.shapesize()
(1, 1, 1)
>>> turtle.resizemode("user")
>>> turtle.shapesize(5, 5, 12)
>>> turtle.shapesize()
(5, 5, 12)
>>> turtle.shapesize(outline=8)
>>> turtle.shapesize()
(5, 5, 8)
  • turtle. tilt(* angle *)
      • Parameters

      • angle –一个数字

从当前倾斜角度以* angle 角度旋转turtle 形状,但不*更改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 *)
      • Parameters

      • angle –一个数字

旋转turtle 形状以指向* angle *指定的方向,而不管其当前的倾斜角度如何。 请勿更改turtle 的前进方向(移动方向)。

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.settiltangle(45)
>>> turtle.fd(50)
>>> turtle.settiltangle(-45)
>>> turtle.fd(50)
  • turtle. tiltangle ( )
    • 返回当前的倾斜角度,即turtle 形状的方向与turtle 的前进方向(其移动方向)之间的角度。
>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(45)
>>> turtle.tiltangle()
45.0

24.5.3.6. 使用事件

  • turtle. onclick(* fun btn = 1 add = None *)

      • Parameters

        • fun –具有两个参数的函数,将使用画布上单击点的坐标来调用该函数
  • btn –鼠标按钮的编号,默认为 1(鼠标左键)

  • addTrueFalse –如果True,将添加新的绑定,否则将替换以前的绑定

将* fun 绑定到该turtle 上的鼠标单击事件。如果 fun *为None,那么将删除现有绑定。匿名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 *)

      • Parameters

        • fun –具有两个参数的函数,将使用画布上单击点的坐标来调用该函数
  • btn –鼠标按钮的编号,默认为 1(鼠标左键)

  • addTrueFalse –如果True,将添加新的绑定,否则将替换以前的绑定

将* fun 绑定到此turtle 上的鼠标按钮释放事件。如果 fun *为None,那么将删除现有绑定。

>>> 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 *)

      • Parameters

        • fun –具有两个参数的函数,将使用画布上单击点的坐标来调用该函数
  • btn –鼠标按钮的编号,默认为 1(鼠标左键)

  • addTrueFalse –如果True,将添加新的绑定,否则将替换以前的绑定

将* fun 绑定到此turtle 上的鼠标移动事件。如果 fun *为None,那么将删除现有绑定。

备注:turtle 上的每个鼠标移动事件序列都在该turtle 上的鼠标单击事件之前。

>>> turtle.ondrag(turtle.goto)

随后,单击并拖动 Turtle 将其在屏幕上移动,从而产生手绘图(如果笔向下)。

  • turtle. mainloop ( )
  • turtle. done ( )
    • 启动事件循环-调用 Tkinter 的 mainloop 函数。必须是 turtle 图形程序中的最后一条语句。
>>> turtle.mainloop()

24.5.3.7. 特殊的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 ( )
    • 返回turtle 正在绘制的TurtleScreen对象。然后可以为该对象调用 TurtleScreen 方法。
>>> ts = turtle.getscreen()
>>> ts
<turtle._Screen object at 0x...>
>>> ts.bgcolor("pink")
  • turtle. setundobuffer(* size *)
      • Parameters

      • size –整数或None

设置或禁用撤消缓冲区。如果* size *是整数,则会安装给定大小的空 undobuffer。 * size 给出了undo()方法/Function可以撤消的最大turtle 动作数量。如果 size *为None,则禁用撤消缓冲区。

>>> turtle.setundobuffer(42)
  • turtle. undobufferentries ( )
    • 返回撤消缓冲区中的条目数。
>>> while undobufferentries():
...     undo()
  • turtle. tracer(* flag = None delay = None *)
    • 相应的 TurtleScreen 方法的副本。

从 2.6 版开始不推荐使用。

  • turtle. window_width ( )
  • turtle. window_height ( )
    • 两者都是相应的 TurtleScreen 方法的副本。

从 2.6 版开始不推荐使用。

24.5.3.8. 有关使用复合形状的调查

要使用由多个不同颜色的多边形组成的复合turtle 形状,必须按如下所述显式使用辅助类Shape

  • 创建一个空的 Shape 对象,类型为“ compound”。

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

For example:

>>> 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")
  • 现在,将形状添加到屏幕的形状列表中并使用它:
>>> register_shape("myshape", s)
>>> shape("myshape")

Note

Shape类在register_shape()方法内部以不同的方式使用。当使用上面显示的复合形状时,应用程序程序员只能处理 Shape 类!

24.5.4. TurtleScreen/Screen 的方法和相应Function

本节中的大多数示例都引用了一个名为screen的 TurtleScreen 实例。

24.5.4.1. Windows 控制

  • turtle. bgcolor(** args *)
      • Parameters

      • args –一个颜色字符串或三个数字,范围为 0..colormode 或此类数字的三 Tuples

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

>>> screen.bgcolor("orange")
>>> screen.bgcolor()
'orange'
>>> screen.bgcolor("#800080")
>>> screen.bgcolor()
(128, 0, 128)
  • turtle. bgpic(* picname = None *)
      • Parameters

      • picname –字符串,gif 文件的名称或"nopic"None

设置背景图片或返回当前 backgroundimage 的名称。如果* picname 是文件名,则将相应的图像设置为背景。如果 picname "nopic",则删除背景图片(如果有)。如果 picname *为None,则返回当前 backgroundimage 的文件名。

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

  • turtle. clearscreen ( )

    • 从 TurtleScreen 中删除所有图形和所有turtle。将现在空的 TurtleScreen 重置为其初始状态:白色背景,无背景图像,无事件绑定和跟踪。

Note

该 TurtleScreen 方法仅在名称clearscreen下可用作全局函数。全局函数clear是从 Turtle 方法clear派生的另一个函数。

  • turtle. reset ( )

  • turtle. resetscreen ( )

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

Note

该 TurtleScreen 方法仅在名称resetscreen下可用作全局函数。全局函数reset是从 Turtle 方法reset派生的另一个函数。

  • turtle. screensize(* canvwidth = None canvheight = None bg = None *)

      • Parameters

        • canvwidth –正整数,画布的新宽度(以像素为单位)
  • canvheight –正整数,画布的新高度(以像素为单位)

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

如果未提供任何参数,则返回当前值(canvaswidth,canvasheight)。否则,请调整turtle 正在绘制的画布的大小。请勿更改绘图窗口。要观察画布的隐藏部分,请使用滚动条。使用这种方法,可以使之前在画布之外的那些部分可见。

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

例如寻找一只误逃的turtle;-)

  • turtle. setworldcoordinates(* llx lly urx ury *)

      • Parameters

        • llx –数字,画布左下角的 x 坐标
  • lly –一个数字,画布左下角的 y 坐标

  • urx –一个数字,画布右上角的 x 坐标

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

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

注意 :在用户定义的坐标系中,角度可能会出现变形。

>>> 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

24.5.4.2. 动画控制

  • turtle. delay(* delay = None *)
      • Parameters

      • 延迟 –正整数

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

Optional argument:

>>> screen.delay()
10
>>> screen.delay(5)
>>> screen.delay()
5
  • turtle. tracer(* n = None delay = None *)

      • Parameters

        • n –非负整数
  • 延迟 –非负整数

打开/关闭turtle 动画并设置更新图纸的延迟。如果给出* n *,则仅 true 执行每个第 n 次常规屏幕更新。 (可用于加速绘制复杂图形.)第二个参数设置延迟值(请参见delay())。

>>> screen.tracer(8, 25)
>>> dist = 2
>>> for i in range(200):
...     fd(dist)
...     rt(90)
...     dist += 2
  • turtle. update ( )
    • 执行 TurtleScreen 更新。跟踪器关闭时使用。

另请参见 RawTurtle/Turtle 方法speed()

24.5.4.3. 使用屏幕事件

  • turtle. listen(* xdummy = None ydummy = None *)

    • 将焦点设置在 TurtleScreen 上(以便收集关键事件)。提供了伪参数,以便能够将listen()传递给 onclick 方法。
  • turtle. onkey(* fun key *)

      • Parameters

        • fun –没有参数或None的函数
  • key –字符串:键(例如“ a”)或键符号(例如“ space”)

将* fun 绑定到密钥的密钥释放事件。如果 fun *为None,那么将删除事件绑定。备注:为了能够注册键事件,TurtleScreen 必须具有焦点。 (请参见方法listen()。)

>>> def f():
...     fd(50)
...     lt(60)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
  • turtle. onclick(* fun btn = 1 add = None *)

  • turtle. onscreenclick(* fun btn = 1 add = None *)

      • Parameters

        • fun –具有两个参数的函数,将使用画布上单击点的坐标来调用该函数
  • btn –鼠标按钮的编号,默认为 1(鼠标左键)

  • addTrueFalse –如果True,将添加新的绑定,否则将替换以前的绑定

将* fun 绑定到此屏幕上的鼠标单击事件。如果 fun *为None,那么将删除现有绑定。

名为screen的 TurtleScreen 实例和名为 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

Note

该 TurtleScreen 方法仅在名称onscreenclick下可用作全局函数。全局函数onclick是从 Turtle 方法onclick派生的另一个函数。

  • turtle. ontimer(* fun t = 0 *)

      • Parameters

        • fun –没有参数的函数
  • t –大于 0 的数字

安装一个在* t 毫秒后调用 fun *的计时器。

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

24.5.4.4. 设置和特殊方法

  • turtle. mode(* mode = None *)
      • Parameters

      • mode –字符串“ standard”,“ logo”或“ world”之一

设置turtle 模式(“标准”,“徽标”或“世界”)并执行重置。如果未提供模式,则返回当前模式。

模式“标准”与旧的turtle兼容。模式“徽标”与大多数徽标 turtle 图形兼容。模式“世界”使用用户定义的“世界坐标”。 注意 :在这种模式下,如果x/y单位比不等于 1,则角度会失真。

Mode最初的 turtle 头positive angles
"standard"向右(向东)counterclockwise
"logo"upward (north)clockwise
>>> mode("logo")   # resets turtle heading to north
>>> mode()
'logo'
  • turtle. colormode(* cmode = None *)
      • Parameters

      • cmode –值 1.0 或 255 之一

返回颜色模式或将其设置为 1.0 或 255.随后,颜色三 Tuples 的* r g b *值必须在 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 ( )
    • 返回此 TurtleScreen 的画布。对于知道如何使用 Tkinter 画布的内部人员很有用。
>>> cv = screen.getcanvas()
>>> cv
<turtle.ScrolledCanvas instance at 0x...>
  • turtle. getshapes ( )
    • 返回所有当前可用的turtle 形状的名称列表。
>>> screen.getshapes()
['arrow', 'blank', 'circle', ..., 'turtle']
  • turtle. register_shape(* name shape = None *)

  • turtle. addshape(* name shape = None *)

    • 有三种不同的方法来调用此函数:
    • name 是 gif 文件的名称, shape *是None:安装相应的图像形状。
>>> screen.register_shape("turtle.gif")

Note

转动 turtle 时,图像形状不会旋转,因此它们不会显示 turtle 的标题!

    • name 是任意字符串, shape *是坐标对的 Tuples:安装相应的多边形形状。
>>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
    • name *是任意字符串,并且 shape 是(复合)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

24.5.4.5. 特定于 Screen 的方法,而不是从 TurtleScreen 继承

  • turtle. bye ( )

    • 关闭 turtle 图窗口。
  • turtle. exitonclick ( )

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

如果配置字典中的“ using_IDLE”值为False(默认值),则还要 Importingmainloop。备注:如果使用带-n开关的 IDLE(无子进程),则此值应在turtle.cfg中设置为True。在这种情况下,IDLE 自己的 mainloop 对于 Client 端脚本也是活动的。

  • turtle. setup(* width = _CFG [“ width”],height = _CFG [“ height”],startx = _CFG [“ leftright”],starty = _CFG [“ topbottom”] *)

    • 设置主窗口的大小和位置。参数的默认值存储在配置字典中,可以passturtle.cfg文件进行更改。
  • Parameters

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

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

  • 开始 –如果为正,则从屏幕顶部边缘开始的像素位置;如果为负,则从底部边缘开始;如果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 *)
      • Parameters

      • titlestring –turtle 图形窗口标题栏中显示的字符串

将turtle 窗口的标题设置为* titlestring *。

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

24.5.5. 模块turtle 的公共类

    • class * turtle. RawTurtle(* canvas *)
    • class * turtle. RawPen(* canvas *)

创建一个turtle。turtle 具有上面描述为“turtle/ RawTurtle 方法”的所有方法。

  • 类别 turtle. Turtle

    • RawTurtle 的子类具有相同的接口,但使用默认的Screen对象,该对象在首次需要时自动创建。
  • 类别 turtle. TurtleScreen(* cv *)

      • Parameters

      • cvTkinter.Canvas

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

  • 类别 turtle. Screen

  • 等级 turtle. ScrolledCanvas(大师)

      • Parameters

      • master –一些 Tkinter 小部件,包含 ScrolledCanvas,即添加了滚动条的 Tkinter 画布

由 Screen 类使用,从而自动提供 ScrolledCanvas 作为turtle 的游乐场。

  • 类别 turtle. Shape(*类型_ *,数据)
      • Parameters

      • type _ –字符串“ polygon”,“ image”,“ compound”之一

数据结构建模形状。 (type_, data)对必须遵循以下规范:

type_data
"polygon"多边形 Tuples,即坐标对的 Tuples
"image"图像(此格式仅在内部使用!)
"compound"None(必须使用addcomponent()方法构造复合形状)
  • addcomponent((* poly fill outline = None *)

      • Parameters

        • poly –多边形,即Pair数字对的 Tuples
  • 填充 –填充*的颜色

  • 轮廓 –多边形轮廓的颜色(如果有)

Example:

>>> 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()

See 有关使用复合形状的调查.

  • 类别 turtle. Vec2D(* x y *)
    • 二维矢量类,用作实现turtle 图形的辅助类。也可能对turtle 图形程序有用。从 Tuples 派生,所以向量就是 Tuples!

提供(用于* a b 向量, k *数字):

  • a + b矢量加法

  • a - b矢量减法

  • a * b内部产品

  • k * aa * k与标量的乘法

  • abs(a)的绝对值

  • a.rotate(angle)轮换

24.5.6. 帮助和配置

24.5.6.1. 如何使用帮助

Screen 和 Turtle 类的公共方法pass docstrings 进行了广泛的记录。因此,这些可以pass Python 帮助工具用作在线帮助:

  • 使用 IDLE 时,工具提示会显示在函数/方法调用中键入的文档字符串的签名和第一行。

  • 在方法或函数上调用help()将显示文档字符串:

>>> 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()
  • 从方法派生的函数的文档字符串具有修改的形式:
>>> 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()

这些修改的文档字符串将与在导入时从方法派生的函数定义一起自动创建。

24.5.6.2. 将文档字符串翻译成不同的语言

有一个 Util 可以创建字典,该字典的键是方法名称,其值是 Screen 和 Turtle 类的公共方法的文档字符串。

  • turtle. write_docstringdict(* filename =“ turtle_docstringdict” *)
      • Parameters

      • filename –字符串,用作文件名

使用给定的文件名创建 docstring-dictionary 并将其写入 Python 脚本。必须显式调用此函数(turtle 图形类不使用此函数)。 docstring 字典将被写入 Python 脚本filename.py。它旨在用作将文档字符串翻译成不同语言的模板。

如果您(或您的学生)希望使用turtle以您的母语提供在线帮助,则必须翻译文档字符串并将结果文件另存为turtle_docstringdict_german.py

如果您的turtle.cfg文件中有适当的条目,则该字典将在导入时读取,并将替换原始的英语文档字符串。

在撰写本文时,有德文和意大利文的文档字符串词典。 (请发送至[email protected]。)

24.5.6.3. 如何配置屏幕和turtle

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

如果您想使用其他配置,该配置可以更好地反映该模块的Function或更好地满足您的需求,例如要在教室中使用,您可以准备一个配置文件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()的参数。

    • shape *可以是任何内置形状,例如:箭头,turtle 等。有关更多信息,请tryhelp(shape)
  • 如果您不想使用 fillcolor(即使turtle 透明),则必须编写fillcolor = ""(但 cfg 文件中的所有非空字符串都不得带有引号)。

  • 如果要反映turtle 的状态,则必须使用resizemode = auto

  • 如果您设置例如language = italian docstringdict turtle_docstringdict_italian.py将在导入时加载(如果存在于导入路径中,例如与turtle相同的目录中)。

  • 条目* exampleturtle examplescreen *定义了这些对象在文档字符串中的名称。将方法文档字符串转换为Function文档字符串会从文档字符串中删除这些名称。

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

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

Demo/turtle目录包含turtle.cfg文件。您可以作为示例进行研究,并在运行演示时查看其效果(最好不在演示查看器中)。

24.5.7. 演示脚本

在原始发行版的Demo/turtle目录中的 turtledemo 目录中有一组演示脚本。

It contains:

  • 一组 15 个演示脚本,展示了新模块turtle的不同Function

  • 演示查看器turtleDemo.py,可用于查看脚本的源代码并同时运行它们。可以pass“示例”菜单访问其中的 14 个示例;它们都可以独立运行。

  • turtledemo_two_canvases.py示例演示了将两个画布与 turtle 模块同时使用。因此,它只能独立运行。

  • 此目录中有一个turtle.cfg文件,该文件也用作如何编写和使用此类文件的示例。

的描述是:

NameDescriptionFeatures
bytedesign复杂的古典turtle 图案tracer(),延迟update()
chaosVerhulst 动力学图形,表明计算机的计算有时会产生违反常识预期的结果world coordinates
clock显示计算机时间的模拟时钟turtle 作为时钟的手,计时器
colormixer用 r,g,b 进行实验ondrag()
fractalcurves希尔伯特和科赫曲线recursion
lindenmayer民族 math(印度科拉姆语)L-System
minimal_hanoi河内塔作为河内盘的矩形turtle(形状,shapesize)
paint超级简约的绘图程序onclick()
peaceelementaryturtle:外观和动画
penroseKite 和飞镖的非周期性平铺stamp()
planet_and_moon引力系统模拟复合形状,Vec2D
tree(图形)广度优先的树(使用生成器)clone()
wikipedia维基百科关于turtle 图形的文章中的一种模式clone(), undo()
yinyang另一个基本的例子circle()

Have fun!