海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0, 0) 点。先执行 import turtle,再执行 turtle.forward(15),它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段。再执行 turtle.right(25),它将原地右转 25 度。
中文文档
方法 | 参数 | 说明 |
---|---|---|
turtle.forward(distance) turtle.fd(distance) |
distance:一个数值 (整型或浮点型) | 前进:海龟前进 distance 指定的距离,方向为海龟的朝向。 |
turtle.backward(distance) turtle.back(distance) turtle.bk(distaance) |
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() 返回的对象).海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。 |
turtle.setx(x) | x:一个数值 (整型或浮点型) | 设置x坐标:设置海龟的横坐标为 x,纵坐标保持不变。 |
turtle.sety(y) | y:一个数值 (整型或浮点型) | 设置y坐标:设置海龟的纵坐标为 y,横坐标保持不变。 |
turtle.setheading(to_angle) turtle.seth(to_angle) |
to_angle:一个数值 (整型或浮点型) | 设置朝向:设置海龟的朝向为 to_angle 标准模式:0-东,90-北,180-西,270-南 logo模式:0-北,90-东,180-南,270-西 |
turtle.home() | 返回原点:海龟移至初始坐标 (0,0),并设置朝向为初始方向 。 | |
turtle.circle(randius, extent=None, steps=None) | randius:半径 extent:夹角 steps:边的数量 |
画圆:绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。 |
turtle.dot(size=None,*color) | size:一个整型数 >= 1 (如果指定) color:一个颜色字符串或颜色数值元组 |
画点:绘制一个直径为 size,颜色为 color 的圆点。如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的较大值。 |
turtle.stamp() | 印章:在海龟当前位置印制一个海龟形状。返回该印章的 stamp_id,印章可以通过调用 clearstamp(stamp_id) 来删除。 | |
turtle.clearstamp(stampid) | stampid :一个整型数,必须是之前 stamp() 调用的返回值 | 清除印章:删除 stampid 指定的印章。 |
turtle.clearstamps(n=None) | n:一个整型数 (或 None) | 清除多个印章:删除全部或前/后 n 个海龟印章。如果 n 为 None 则删除全部印章,如果 n > 0 则删除前 n 个印章,否则如果 n < 0 则删除后 n 个印章。 |
turtle.undo() | 撤销:撤消 (或连续撤消) 最近的一个 (或多个) 海龟动作。可撤消的次数由撤消缓冲区的大小决定。 | |
turtle.speed(speed=None) | speed:一个 0…10 范围内的整型数或速度字符串 "fastest":0最快 "fast":10快 "normal":6正常 "slow":3慢 "slowest":1最慢 |
速度:设置海龟移动的速度为 0…10 表示的整型数值。如未指定参数则返回当前速度。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.position() turtle.pos() |
位置:返回海龟当前的坐标 (x,y) (为 Vec2D 矢量类对象)。 | |
turtle.towards(x,y=None) | x:一个数值或数值对/矢量,或一个海龟实例 y:一个数值——如果 x 是一个数值,否则为 None |
目标方向:返回从海龟位置到由 (x,y)、矢量或另一海龟所确定位置的连线的夹角。 此数值依赖于海龟的初始朝向,这又取决于 “standard”/“world” 或 “logo” 模式设置。 |
turtle.xcor() | 返回海龟的x坐标 | |
turtle.ycor() | 返回海龟的y坐标 | |
turtle.heading() | 返回海龟当前的朝向 | |
turtle.distance(x, y=None) | x:一个数值或数值对/矢量,或一个海龟实例。 y:一个数值——如果 x 是一个数值,否则为 None |
距离:返回从海龟位置到由 (x,y),适量或另一海龟对应位置的单位距离。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.degrees(fullcircle=360.0) | fullcircle:一个数值 | 角度:设置角度的度量单位,即设置一个圆周为多少 “度”。默认值为 360 度。 |
turtle.radians() | 弧度:设置角度的度量单位为弧度。其值等于 degrees(2*math.pi)。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.pendown() turtle.down() turtle.pd() |
画笔落下 | |
turtle.pendup() turtle.up() turtle.pu() |
画笔抬起 | |
turtle.pensize(width=None) turtle.width(width=None) |
width:一个数值 | 画笔粗细:设置线条的粗细为 width 或返回该值。如果 resizemode 设为 “auto” 并且 turtleshape 为多边形,该多边形也以同样组细的线条绘制。如未指定参数,则返回当前的 pensize。 |
turtle.pen(pen=None, **pendict) | pen:一个包含部分或全部下列键的字典 pendict:一个或多个以下列键为关键字的关键字参数 |
画笔 |
turtle.isdown() | 画笔是否落下:如果画笔落下返回 True,如果画笔抬起返回 False。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.color(*args) | color():返回以一对颜色描述字符串或元组表示的当前画笔颜色和填充颜色,两者可分别由 pencolor() 和 fillcolor() 返回。 color(colorstring), color((r,g,b)), color(r,g,b)输入格式与 pencolor() 相同,同时设置填充颜色和画笔颜色为指定的值。 color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))相当于 pencolor(colorstring1) 加 fillcolor(colorstring2),使用其他输入格式的方法也与之类似。 |
返回或设置画笔颜色和填充颜色 |
turtle.pencolor(*args) | 允许以下四种输入格式: pencolor() pencolor(colorstring) pencolor((r, g, b)) pencolor(r, g, b) |
返回或设置画笔颜色。 |
turtle.fillcolor(*args) | 允许以下四种输入格式: fillcolor() fillcolor(colorstring) fillcolor((r, g, b)) fillcolor(r, g, b) |
返回或设置填充颜色 |
方法 | 参数 | 说明 |
---|---|---|
turtle.filling() | 返回填充状态 (填充为 True,否则为 False)。 | |
turtle.begin_fill() | 开始填充:在绘制要填充的形状之前调用。 | |
turtle.end_fill() | 结束填充:填充上次调用 begin_fill() 之后绘制的形状 |
方法 | 参数 | 说明 |
---|---|---|
turtle.reset() | 重置 :从屏幕中删除海龟的绘图,海龟回到原点并设置所有变量为默认值。 | |
turtle.clear() | 清空 :从屏幕中删除指定海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。 | |
turtle.write(arg, move=False, align=“left”, font=(“Arial”, 8, “normal”)) | arg – 要书写到 TurtleScreen 的对象 move – True/False align – 字符串 “left”, “center” 或 "right" font – 一个三元组 (fontname, fontsize, fonttype) |
书写 :基于 align (“left”, “center” 或 “right”) 并使用给定的字体将文本 —— arg 的字符串表示形式 —— 写到当前海龟位置。 如果 move 为真值,画笔会移至文本的右下角。 默认情况下 move 为 False。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.showturtle() | st() | 显示海龟 |
turtle.hideturtle() | ht() | 隐藏海龟:使海龟不可见。当你绘制复杂图形时这是个好主意,因为隐藏海龟可显著加快绘制速度。 |
turtle.isvisible() | 海龟是否可见:如果海龟显示返回 True,如果海龟隐藏返回 False。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.shape(name=None) | name:一个有效的形状名字符串 "arrow",“turtle”,“circle”,“square”,“triangle”,“classic” |
形状 |
turtle.resizemode(rmode=None) | rmode:字符串 “auto”, “user”, “noresize” 其中之一 | 大小调整模式:设置大小调整模式为以下值之一: “auto”, “user”, “noresize”。如未指定 rmode 则返回当前的大小调整模式。 |
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-拉伸因子和/或轮廓。 |
turtle.shearfactor(shear=None) | shear – 数值 (可选) | 剪切因子:设置或返回当前的剪切因子。 |
turtle.settiltangle(angle) | angle – 一个数值 | 设置倾角:旋转海龟形状使其指向 angle 指定的方向,忽略其当前的倾角,不 改变海龟的朝向 (移动方向)。 |
turtle.tiltangle(angle=None) | angle – 一个数值 (可选) | 倾角:设置或返回当前的倾角。如果指定 angle 则旋转海龟形状使其指向 angle 指定的方向,忽略其当前的倾角。不 改变海龟的朝向 (移动方向)。如果未指定 angle: 返回当前的倾角,即海龟形状的方向和海龟朝向 (移动方向) 之间的夹角。 |
turtle.tilt(angle) | angle – 一个数值 | 倾斜:海龟形状自其当前的倾角转动 angle 指定的角度,但 不 改变海龟的朝向 (移动方向)。 |
turtle.shapetransform(t11=None, t12=None, t21=None, t22=None) | t11,t12,t21,t22一个数值(可选) | 变形:设置或返回海龟形状的当前变形矩阵。 |
turtle.get_shapepoly() | 获取形状多边形:返回以坐标值对元组表示的当前形状多边形。这可以用于定义一个新形状或一个复合形状的多个组成部分。 |
方法 | 参数 | 说明 |
---|---|---|
turtle.onclick(fun, btn=1, add=None) | fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标 btn – 鼠标按钮编号,默认值为 1 (鼠标左键) add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定 |
鼠标单击 |
turtle.onrelease(fun, btn=1, add=None) | fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。 btn – 鼠标按钮编号,默认值为 1 (鼠标左键) add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定 |
鼠标释放 |
turtle.ondrag(fun, btn=1, add=None) | fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。 btn – 鼠标按钮编号,默认值为 1 (鼠标左键) add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定 |
鼠标拖动 |
方法 | 参数 | 说明 |
---|---|---|
turtle.begin_poly() | 开始记录多边形 :开始记录多边形的顶点。当前海龟位置为多边形的第一个顶点。 | |
turtle.end_poly() | 停止记录多边形:停止记录多边形的顶点。当前海龟位置为多边形的最后一个顶点。它将连线到第一个顶点。 | |
turtle.get_poly() | 获取多边形:返回最新记录的多边形。 | |
turtle.clone() | 克隆:创建并返回海龟的克隆体,具有相同的位置、朝向和海龟属性。 | |
turtle.getturtle() turtle. getpen() |
返回海龟对象自身。 | |
turtle.getscreen() | 获取屏幕 | |
turtle.setundobuffer(size) | size – 一个整型数值或 None | 设置撤销缓冲区 |
turtle.undobufferentries() | 撤销缓冲区条目数 |
方法 | 参数 | 说明 |
---|---|---|
screen.bgcolor(*args) | args – 一个颜色字符串或三个取值范围 0…colormode 内的数值或一个取值范围相同的数值3元组设置或返回 TurtleScreen 的背景颜色。 “orange”,"#800080" |
背景颜色 |
screen.bgpic(picname=None) | picname – 一个字符串, gif-文件名, “nopic”, 或 None | 背景图片:设置背景图片或返回当前背景图片名称。如果 picname 为一个文件名,则将相应图片设为背景。如果 picname 为 “nopic”,则删除当前背景图片。如果 picname 为 None,则返回当前背景图片文件名。 |
screen.clear() screen.clearscreen() |
清屏:从中删除所有海龟的全部绘图。将已清空的 TurtleScreen 重置为初始状态: 白色背景,无背景片,无事件绑定并启用追踪。 | |
screen.reset() screen. resetscreen() |
重置:重置屏幕上的所有海龟为其初始状态。 | |
screen.screensize(canvwidth=None, canvheight=None, bg=None) | canvwidth – 正整型数,以像素表示画布的新宽度值 canvheight – 正整型数,以像素表示画面的新高度值 bg – 颜色字符串或颜色元组,新的背景颜色 |
屏幕大小 |
screen.setworldcoordinates(llx, lly, urx, ury) | llx – 一个数值, 画布左下角的 x-坐标 lly – 一个数值, 画布左下角的 y-坐标 urx – 一个数值, 画面右上角的 x-坐标 ury – 一个数值, 画布右上角的 y-坐标 |
设置世界坐标系:设置用户自定义坐标系并在必要时切换模式为 “world”。这会执行一次 screen.reset()。如果 “world” 模式已激活,则所有图形将根据新的坐标系重绘。 |
方法 | 参数 | 说明 |
---|---|---|
screen.delay(delay=None) | delay – 正整型数 | 延时 :设置或返回以毫秒数表示的延迟值 delay。 (这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。 |
screen.tracer(n=None, delay=None) | n – 非负整型数 delay – 非负整型数 |
追踪:启用/禁用海龟动画并设置刷新图形的延迟时间。 如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。 (可被用来加速复杂图形的绘制。) 如果调用时不带参数,则返回当前保存的 n 值。 第二个参数设置延迟值 (参见 delay())。 |
screen.update() | 更新:执行一次 TurtleScreen 刷新。在禁用追踪时使用。 |
方法 | 参数 | 说明 |
---|---|---|
screen.listen(xdummy=None, ydummy=None) | 监听:设置焦点到 TurtleScreen (以便接收按键事件)。使用两个 Dummy 参数以便能够传递 listen() 给 onclick 方法。 | |
screen.onkey(fun, key) screen.onkeyrelease(fun, key) |
fun – 一个无参数的函数或 None key – 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”) |
当键盘按下并释放 |
screen.onkeypress(fun, key=None) | fun – 一个无参数的函数或 None key – 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”) |
当键盘按下:绑定 fun 指定的函数到指定键的按下事件。 |
screen.onclick(fun, btn=1, add=None) screen.onscreenclick(fun, btn=1, add=None) |
fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。 btn – 鼠标按钮编号,默认值为 1 (鼠标左键) add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定 |
当点击屏幕:绑定 fun 指定的函数到鼠标点击屏幕事件。如果 fun 值为 None,则移除现有的绑定。 |
screen.ontimer(fun, t=0) | fun – 一个无参数的函数 t – 一个数值 >= 0 |
当达到定时:安装一个计时器,在 t 毫秒后调用 fun 函数。 |
screen.mainloop() screen. done() |
主循环:开始事件循环 - 调用 Tkinter 的 mainloop 函数。必须作为一个海龟绘图程序的结束语句。如果一个脚本是在以 -n 模式 (无子进程) 启动的 IDLE 中运行时 不可 使用 - 用于实现海龟绘图的交互功能。 |
方法 | 参数 | 说明 |
---|---|---|
screen.mode(mode=None) | mode – 字符串 “standard”, “logo” 或 “world” 其中之一 | 模式:设置海龟模式 (“standard”, “logo” 或 “world”) 并执行重置。如未指定模式则返回当前的模式。 |
screen.colormode(cmode=None) | cmode – 数值 1.0 或 255 其中之一 | 颜色模式:返回颜色模式或将其设为 1.0 或 255。构成颜色三元组的 r, g, b 数值必须在 0…cmode 范围之内。 |
screen.getcanvas() | 获取画布:返回此 TurtleScreen 的 Canvas 对象。供了解 Tkinter 的 Canvas 对象内部机理的人士使用。 | |
screen.getshapes() | 获取形状:返回所有当前可用海龟形状的列表。 | |
screen.register_shape(name, shape=None) screen.addshape(name, shape=None) |
1.name 为一个 gif 文件的文件名, shape 为 None: 安装相应的图像形状。 2.name 为指定的字符串,shape 为由坐标值对构成的元组: 安装相应的多边形形状。 3. name 为指定的字符串, 为一个 (复合) Shape 类对象: 安装相应的复合形状。 |
添加形状 |
screen.turtles() | 所有海龟:返回屏幕上的海龟列表。 | |
screen.window_height () | 窗口高度:返回海龟窗口的高度。 | |
screen.window_width() | 窗口宽度:返回海龟窗口的宽度。 |
方法 | 参数 | 说明 |
---|---|---|
screen.textinput(title, prompt) | title – 字符串 prompt – 字符串 |
文本输入:弹出一个对话框窗口用来输入一个字符串。 |
screen.numinput(title, prompt, default=None, minval=None, maxval=None) | title – 字符串 prompt – 字符串 default – 数值 (可选) minval – 数值 (可选) maxval – 数值 (可选) |
数字输入:弹出一个对话框窗口用来输入一个数值。title 为对话框窗口的标题,prompt 为一条文本,通常用来描述要输入的数值信息。default: 默认值, minval: 可输入的最小值, maxval: 可输入的最大值。输入数值的必须在指定的 minval … maxval 范围之内,否则将给出一条提示,对话框保持打开等待修改。返回输入的数值。如果对话框被取消则返回 None。 |
方法 | 参数 | 说明 |
---|---|---|
screen.bye() | 退出:关闭海龟绘图窗口。 | |
screen.exitonclickk() | 当点击时退出 :将 bye() 方法绑定到 Screen 上的鼠标点击事件。 | |
screen.setup(width=_CFG[“width”], height=_CFG[“height”], startx=_CFG[“leftright”], starty=_CFG[“topbottom”]) | width – 如为一个整型数值,表示大小为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 50% height – 如为一个整型数值,表示高度为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 75% startx – 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None 表示窗口水平居中 starty – 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None 表示窗口垂直居中 |
设置主窗口的大小和位置。 |
screen.title(titlestring) | titlestring – 一个字符串,显示为海龟绘图窗口的标题栏文本 | 设置海龟窗口标题为 titlestring 指定的文本。 |