turtle
是一个预装的 Python 库,能够提供虚拟画布来创建图片和形状。用于绘图的屏幕笔称为海龟,这就是库的名称。
turtle
是一个图形库,这意味着需要创建一个单独的窗口(称为screen)来执行每个绘图命令。可以通过为其初始化变量来创建此屏幕。
现在,要打开turtle
屏幕,可以通过以下方式为其初始化一个变量:
>>> s = turtle.getscreen()
应该会看到一个单独的窗口打开:
这个窗口叫做屏幕。可以在此处查看代码的输出。屏幕中间那个黑色的小三角形状叫做乌龟。
接下来,初始化变量t
,然后在整个程序中使用它来引用海龟:
>>> t = turtle.Turtle()
就像在屏幕上,也可以给这个变量其他名称,如a
或Jane
,甚至my_turtle
。
屏幕充当画布,而乌龟则充当笔。可以对海龟进行编程以在屏幕上移动。乌龟具有一定的多变特性,如大小、颜色和速度。它总是指向一个特定的方向,并且会朝着那个方向移动,除非另有说明:
- 当它up 时,表示它移动时不会画线。
- 当它down 时,表示移动时会画一条线。
移动乌龟
>>> t.right(90)
>>> t.forward(100)
>>> t.left(90)
>>> t.backward(100)
当运行这些命令时,乌龟将向右转九十度,向前一百个单位,向左转九十度,然后向后移动一百个单位。您可以在下图中看到它的外观:
也可以使用这些命令的缩短版本:
-
t.rt()
代替t.right()
-
t.fd()
代替t.forward()
-
t.lt()
代替t.left()
-
t.bk()
代替t.backward()
还可以从当前位置画一条线到屏幕上的任何其他任意位置。这是在坐标的帮助下完成的:
画面分为四个象限。海龟最初位于程序开头的点是(0,0)
. 这称为Home。要将海龟移动到屏幕上的任何其他区域,请使用.goto()
并输入如下坐标:
>>> t.goto(100,100)
输出将如下所示:
已经从当前位置到(100,100)
屏幕上的点绘制了一条线。
要将海龟带回其原始位置,请键入以下内容:
>>> t.home()
这就像一个将海龟送回该点的快捷命令(0,0)
。它比打字快t.goto(0,0)
。
绘制形状
现在知道了乌龟的动作,可以继续制作实际的形状。可以从绘制多边形开始,因为它们都由以特定角度连接的直线组成。
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
>>> t.rt(90)
>>> t.fd(100)
画了一个正方形。通过这种方式,可以对海龟进行编程以创建不同的形状和图像。
绘制预设图形
画一个圆。
>>> t.circle(60)
输出:
括号内的数字是圆的半径。可以通过更改圆的半径值来增加或减小圆的大小。
同样的方法,也可以画一个点,只不过是一个实心圆。键入此命令:
>>> t.dot(20)
会得到一个像这样的实心圆圈:
括号内的数字是圆点的直径。就像圆一样,可以通过更改圆点的直径值来增大或减小圆点的大小。
更改屏幕颜色
默认情况下,turtle
总是打开一个白色背景的屏幕。但是,可以随时使用以下命令更改屏幕颜色:
>>> turtle.bgcolor("blue")
可以"blue"
用任何其他颜色替换。尝试"green"
或"red"
。
只需输入十六进制代码,就可以为屏幕使用各种颜色。
更改屏幕标题
更改屏幕的标题。
>>> turtle.title("My Turtle Program")
标题栏现在将显示:
可以根据自己的喜好更改屏幕的标题。
改变海龟大小
可以增加或减少屏幕上的乌龟的大小以使其变大或变小。这只会改变形状的大小,而不会影响笔在屏幕上绘制时的输出。
>>> t.shapesize(1,5,10)
>>> t.shapesize(10,5,1)
>>> t.shapesize(1,10,5)
>>> t.shapesize(10,1,5)
输出将如下所示:
给出的数字是海龟大小的参数:
- 拉伸长度
- 拉伸宽度
- 轮廓宽度
可以根据自己的喜好更改这些。在上面给出的示例中,您可以看到海龟外观的明显差异。
更改笔大小
前面的命令只改变了海龟形状的大小。但是,有时,可能需要增加或减少笔的粗细。
>>> t.pensize(5)
>>> t.forward(100)
这会导致这样的结果:
笔的大小现在是原始大小的五倍(原来是一)。
更改乌龟和笔的颜色
乌龟一开始是一个黑色的图形,并用黑色墨水绘制。
- 更改海龟的颜色:这会更改填充颜色。
- 更改笔的颜色:这会更改轮廓或墨水颜色。
增加乌龟的大小。
>>> t.shapesize(3,3,3)
更改海龟(或填充)的颜色:
>>> t.fillcolor("red")
乌龟看起来像这样:
更改笔(或轮廓)的颜色:
>>> t.pencolor("green")
乌龟看起来像这样:
要更改两者的颜色:
>>> t.color("green", "red")
乌龟看起来像这样:
这里,第一种颜色用于笔,第二种颜色用于填充。请注意,更改画笔和填充的颜色也会相应地更改屏幕上乌龟的颜色。
填充图像
>>> t.begin_fill()
>>> t.fd(100)
>>> t.lt(120)
>>> t.fd(100)
>>> t.lt(120)
>>> t.fd(100)
>>> t.end_fill()
得到一个用纯色填充的三角形:
当使用 时.begin_fill()
,将要绘制一个需要填充的闭合形状。然后,使用.end_fill()
表示已完成形状的创建,现在可以填充它.
改变海龟形状
乌龟的初始形状并不是真正的乌龟,而是一个三角形。但是,可以更改海龟的外观,并且有几个选择。可以通过键入以下命令来查看其中的一些:
>>> t.shape("turtle")
>>> t.shape("arrow")
>>> t.shape("circle")
乌龟的形状会相应改变,像这样:
还可以尝试其他几个选项:
- 正方形
- 箭
- 圆圈
- 龟
- 三角形
- 经典的
经典的形状是原始形状。
更改笔速度
乌龟通常以适中的速度移动。如果想降低或提高速度以使乌龟移动得更慢或更快,那么可以通过键入以下内容来做到这一点:
>>> t.speed(1)
>>> t.forward(100)
>>> t.speed(10)
>>> t.forward(100)
此代码将首先降低速度并向前移动海龟,然后增加速度并再次向前移动海龟,如下所示:
速度可以是从 0(最慢速度)到 10(最高速度)范围内的任意数字。
一站式定制
假设要将海龟的特征设置为以下内容:
- 笔颜色:紫色
- 填充颜色:橙色
- 笔大小: 10
- 笔速: 9
>>> t.pencolor("purple")
>>> t.fillcolor("orange")
>>> t.pensize(10)
>>> t.speed(9)
>>> t.begin_fill()
>>> t.circle(90)
>>> t.end_fill()
现在,想象一下如果有十只不同的乌龟。可以通过仅在一行代码中更改参数来减少工作量,如下所示:
>>> t.pen(pencolor="purple", fillcolor="orange", pensize=10, speed=9)
>>> t.begin_fill()
>>> t.circle(90)
>>> t.end_fill()
上下拿起笔
有时,可能希望将乌龟移动到屏幕上的另一个点,而不在屏幕上绘制任何内容。为此,使用.penup()
. 然后,当想再次开始绘图时,使用.pendown()
. 使用之前用于绘制正方形的代码试一试。
>>> t.fd(100)
>>> t.rt(90)
>>> t.penup()
>>> t.fd(100)
>>> t.rt(90)
>>> t.pendown()
>>> t.fd(100)
>>> t.rt(90)
>>> t.penup()
>>> t.fd(100)
>>> t.pendown()
运行此代码时,输出将如下所示:
在这里,通过在原始程序之间添加一些额外的命令,获得了两条平行线而不是正方形。
撤消更改
>>> t.undo()
这将撤消运行的最后一个命令。如果要撤消最后三个命令,则需要键入t.undo()
3 次。
清屏
>>> t.clear()
这将清理您的屏幕,以便可以继续绘图。请注意,变量不会改变,并且海龟将保持在相同的位置。如果屏幕上除了原始海龟之外还有其他海龟,那么除非在代码中明确调用它们,否则它们的绘图将不会被清除。
重置环境
>>> t.reset()
这将清除屏幕并将海龟带回其原始位置。默认设置,如海龟的大小、形状、颜色和其他特征,也将恢复。
克隆乌龟
>>> c = t.clone()
>>> t.color("magenta")
>>> c.color("red")
>>> t.circle(100)
>>> c.circle(60)
输出将如下所示: