为您推荐:
精华内容
最热下载
问答
  • 5星
    1.18MB weixin_45771864 2021-07-19 16:11:07
  • 在了解 turtle 时发现国内外一些青少年教育所使用的一些教学产品跟 turtle 类似;turtle 如果在国内作为一个青少年教学产品还是非常好的。 简介 在 turtle 官方文档中介绍说到 “Turtle graphics is a popula...

    前言

    本文参考:Python库官方文档
    本文例子摘抄自Python库官方文档,为了方便讲解,个人进行了修改,并且相关函数说明不完全参照文档,在结果处贴出了执行结果,不方便用jpg等图片作为展示的用了gif格式图片进行展示结果。

    如有错误欢迎指出,之后会出关于turtle的实现的博文,欢迎关注!

    由于网上其它文档的形式不符合我个人习惯,在查阅资料时总感觉不是很习惯,就想着顺手写一篇博文作为一个参考示例。

    在了解 turtle 时发现国内外一些青少年教育所使用的一些教学产品跟 turtle 类似;turtle 如果在国内作为一个青少年教学产品还是非常好的。

    简介

    在 turtle 官方文档中介绍说到 “Turtle graphics is a popular way for introducing programming to kids.” 它是一个向青少年作为一个普及启蒙类编程的好方式;对于我个人来说,英文并不是我们的第一语言,一些学生的英文水平也不是过于优秀,在学习编程的时候会导致一些困难,虽然这些困难并不是决定学不学的会的主要原因,但也起到了一定的阻碍作用;如果在国内用 turtle 进行一个教学的话,用深圳的学生举例,可以用作小学5年级(包括五年级)以上学生的教学;这对于他们来说,turtle 带来的是其它教学产品所不能带来“专业编程”的实践体验;这可能就是模拟环境和真实环境的区别吧。(当然,专业编程从业者使用 turtle 也肯定是没问题,所以我之前才说,这个python库所带来的体验是比较接近于“专业”的。)

    turble 是由Wally Feurzig 和 Seymour Papert 在1966年进行开发的。

    在 turtle 的基本开发中是围绕着一个2D平面进行开发的,其中的主角是一个小箭头;这个小箭头就像一个小海龟,通过编程,命令小海龟在屏幕上进行移动绘制,从而画出一条条线段。通过这些线段可以组成各式各样的图案,如果你的绘画技术不怎么好,也许使用 turtle 进行绘制会有意想不到的惊喜!

    在官方文档的说明中,是以交互式的方式进行的说明,在本篇文章中,不以交互式方式进行说明;由于考虑到编程的普及这几年呈现低龄化,本篇将会尽量的详细说明,但一些深入的知识将不会讲解(之后再写一篇实现解析),一般来说简单实用只需要了解使用方式即可;敬请谅解。假设你是个从业经验的开发者,想了解实现过程,那么敬请期待我的下一篇文章。

    注意,因为使用 turtle 的python是需要Tk支持的版本。Tkinter是标准的Python接口Tk的GUI工具包,可以使用命令 python -m tkinter 检查是否安装。如果出现一个简单的窗口即为已安装。Tk和tkinter在大多数Unix平台以及Windows系统上都可用。点击查看官方文档具体Tk的详情。

    基本编程说明

    以下编程说明摘抄于官方文档(在本篇文档中初学者无需过多了解)。

    在编程中,基本上使用有两个+两个类:

    1. TurtleScreen类将会绘制出一个2D平面,turtle 相当于绘画笔。。
      它的构造函数需要一个Tkinter.Canvas或一个ScrolledCanvas作为参数。 当应用程序使用turtle时应该使用它。
      Screen()函数返回一个TurtleScreen子类的单例。 当turtle被用作单独的绘制工具使,就应该使用这个函数。
    2. RawTurtle 别名是 RawPen,定义了在 TurtleScreen
      上绘制的Turtle对象。它的构造函数需要Canvas,可用ScrolledCanvas或TurtleScreen作为参数,上一点已经提到
      TurtleScreen 将会绘制出一个2D平面给予 turtle 绘制,因此RawTurtle对象知道在哪里绘制。
      派生自RawTurtle的是子类Turtle(别名:),该子类使用自动创建Pen的“ Screen实例” (如果尚未存在)。

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

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

    函数列表

    在 Turtle 中,Turtle 方法分别为 turtle 运动、笔控制、turtle 状态;TurtleScreen 方法分为窗口控制、动画控制、屏幕事件、特殊方法、输入方法、面对屏幕的特殊方法。

    turtle 运动一共有如下函数:
    绘制及移动:

    • forward() | fd()
    • backward() | bk() | back()
    • right() | rt()
    • left() | lt()
    • goto() | setpos() | setposition()
    • setx()
    • sety()
    • setheading() | seth()
    • home()
    • circle()
    • dot()
    • stamp()
    • clearstamp()
    • clearstamps()
    • undo()
    • speed()

    取得 turtle 状态:

    • position() | pos()
    • towards()
    • xcor()
    • ycor()
    • heading()
    • distance()

    设置和测量:

    • degrees()
    • radians()

    笔控制->绘制状态:

    • pendown() | pd() | down()
    • penup() | pu() | up()
    • pensize() | width()
    • pen()
    • isdown()

    颜色控制:

    • color()
    • pencolor()
    • fillcolor()

    填满:

    • filling()
    • begin_fill()
    • end_fill()

    更多绘制控制:

    • reset()
    • clear()
    • write()

    笔状态->可见度:

    • showturtle() | st()
    • hideturtle() | ht()
    • isvisible()

    外观:

    • shape()
    • resizemode()
    • shapesize() | turtlesize()
    • shearfactor()
    • settiltangle()
    • tiltangle()
    • tilt()
    • shapetransform()
    • get_shapepoly() 未补全

    事件:

    • onclick()
    • onrelease()
    • ondrag()

    一些 turtle 的特殊方法:

    • begin_poly()

    • end_poly()

    • get_poly()

    • clone()

    • getturtle() |

    • getpen()

    • getscreen()

    • setundobuffer()

    • undobufferentries()

    屏幕方法如下:
    窗口控制:

    • bgcolor()
    • bgpic()
    • clear() | clearscreen()
    • reset() | resetscreen()
    • screensize()
    • setworldcoordinates()

    动画控制:

    • delay()
    • tracer()
    • update()

    屏幕事件:

    • listen()
    • onkey() | onkeyrelease()
    • onkeypress() 未补全
    • onclick() | onscreenclick()
    • ontimer()
    • mainloop() | done() 未补全

    设置和特殊方法:

    • mode() 未补全
    • colormode() 未补全
    • getcanvas()
    • getshapes()
    • register_shape() | addshape() 未补全
    • turtles()
    • window_height()
    • window_width()

    输入方法:

    • textinput()
    • numinput()

    面对屏幕的特殊方法:

    • bye()
    • exitonclick() 未补全
    • setup()
    • title()

    函数使用与示例

    turtle 运动部分

    forward() | fd()

    使用语法:
    turtle.forward(距离)
    turtle.fd(距离)
    参数说明: 距离 一个数字 (整数 或者 浮点)
    (注:这个距离的单位是像素)
    代码示例:

    from turtle import *
    forward(25)
    input()
    

    代码释义:
    from turtle import *: 在安装好turtle后,使用from引入turtle,导入其中所有的模块,所以我使用了import *;
    forward(25):由于我引入了 turtle 所以不再使用 turtle 进行调用,直接使用方法即可;使用forward向一个方向画一根线,这根线默认方向向右,朝着箭头所指的方向前进,并且是在行动中进行画线,方法传入的参数是你想绘制线段的长度,或者说是你想这只 turtle 想要行迹的距离,填入数字后,小 turtle 会向这个方向行动。
    input():假设不适用input将会导致窗口一闪而过,使用input可以使你查看运行效果;当然不排除有些IDE或者编辑器默认有此功能。
    运行结果如下:
    在这里插入图片描述
    如果以上示例并不能很好的突出线段的距离,可以加大距离长度;现在我将长度改为300,代码更改为:

    from turtle import *
    forward(300)
    input()
    

    运行效果如下:
    在这里插入图片描述

    backward()

    使用语法:
    turtle.back(距离)
    turtle.bk(距离)
    turtle.backward(距离)
    传入参数: 距离 数字
    把乌龟向后移动一段距离,与乌龟前进的方向相反。不能改变乌龟的方向。
    使用示例:

    from turtle import *
    forward(300)
    backward(400)
    input()
    

    代码释义:
    backward(400):使用backward返回turtle的行动,为了突出对比,使用了大于forward长度的距离参数。当然也可以使用bk和back方法,效果都是一样的:

    from turtle import *
    forward(300)
    bk(400)
    input()
    

    运行结果:
    在这里插入图片描述

    right()/left()

    使用语法:
    turtle.right(angle)
    turtle.rt(angle)
    参数: 角度 数字 (整数或者是浮点数)
    使用right方法可以使 turtle 向右旋转角度,但要注意只是旋转角度方向,并不会前行。角度的旋转是以顺时针旋转。可以用正负号表示转向方向。不添加符号表示默认方式顺时针旋转,添加“-”号为逆时针旋转。
    使用示例(为了更好的做比较,我在forward前添加了right转向):

    from turtle import *
    right(30)
    forward(300)
    input()
    

    right(30):顺时针转向30°
    运行结果:
    在这里插入图片描述
    逆时针转向:

    from turtle import *
    right(-30)
    forward(300)
    input()
    

    right(-30):逆时针转向30°
    运行结果:
    在这里插入图片描述
    使用right是向右转,使用left是向左转,在此不再赘述。

    goto()

    turtle.goto(x, y=None)
    turtle.setpos(x, y=None)
    turtle.setposition(x, y=None)
    参数:
    x :一个数或一个坐标
    y :一个数或者为空
    在turtle 绘制的区域,是一个2D平面,这个平面由坐标定位,在turtle中使用pos表示坐标,初始位置为(0,0),使用goto传入坐标将会跳转至该坐标点并且绘制;
    代码示例:

    from turtle import *
    
    goto(30,30)
    input()
    

    goto(30,30) :跳转到坐标点x为30,y为30处。
    运行结果:
    在这里插入图片描述
    在此注意,小turtle的方向并没有改变。

    setx()/sety()

    turtle.setx(x)
    参数: x:一个数字 (整数或者浮点)
    设置x坐标的值,y坐标不变
    turtle.sety(y)
    参数: y :一个数字(整数或者浮点)
    设置y坐标的值,x坐标不变
    setx代码示例:

    from turtle import *
    
    setx(10)
    input()
    

    setx(10):设置x坐标到达10位置,sety不再赘述

    在这里插入图片描述

    setheading() | seth()

    turtle.setheading(to_angle)
    turtle.seth(to_angle)
    参数:

    • to_angle:一个整数(整数或者浮点)

    使用 setheading 将会把turtle初始状态设置为0°,类似于一个量角器,初始状态下turtle是个垂直于一条平面的线,并没有角度,所以为0,如果使用 setheading 传入参数 45 后,将会方向指向相对于初始状态的45°。
    代码示例:

    from turtle import *
    
    setheading(45)
    input()
    

    运行效果:

    在这里插入图片描述
    seth 方法类似不在赘述。

    home()

    turtle.home()
    将turtle移动到原点坐标(0,0)-并将其航向设置为起始方向。

    from turtle import *
    
    forward(80)
    home()
    input()
    

    home():将turtle至于初始坐标。
    运行结果:

    在这里插入图片描述

    circle()

    turtle.circle(radius, extent=None, steps=None)
    参数:

    • radius :数字 半径
    • extent : 数字 范围 可以为空
    • steps : 整数 可以为空

    使用circle可以画出一个圆,或者弧度,第一个参数为半径,第二个参数可以控制绘制的范围多少,如果输入90,那么只绘制到90°位置;steps为阶梯,圆的边其实是锯齿状的,相当于像素点的感觉,一下代码将会作出对比,方便理解。
    画出一个圆代码示例:

    from turtle import *
    
    circle(120)
    input()
    

    代码释义:
    circle(120):半径为120的圆
    运行结果:
    在这里插入图片描述
    加上第二个参数extent 进行绘制:

    from turtle import *
    
    circle(120,180)
    input()
    

    代码释义:
    circle(120,180):直径120的一个扇形。
    在这里插入图片描述
    加入第三个参数steps代码示例:

    from turtle import *
    
    circle(120,180,1)
    input()
    

    代码释义:
    circle(120,180,1):阶梯为1的扇形。

    在这里插入图片描述
    变成一条直线了,我们给改steps为2,circle(120,180,2)运行结果:

    在这里插入图片描述
    变成一个折线了,我们给改steps为20,circle(120,180,20)运行结果:
    在这里插入图片描述
    恢复正常,这就是steps阶梯。

    dot()

    turtle.dot(size=None, *color)
    参数:

    • size :大于0的整数
    • color :颜色标识 用一个指定颜色绘制一个尺寸为size的原点。

    代码示例:

    from turtle import *
    
    dot(20,"blue")
    input()
    

    运行结果:
    在这里插入图片描述

    stamp()

    turtle.stamp()
    复制一个turtle。

    from turtle import *
    
    stamp()
    color("blue")
    goto(100,0)
    input()
    

    代码释义:
    stamp():复制一个自己;
    color("blue"):设置当前的自己为蓝色;
    goto(100,0):移动到左边x为100,y为0处。
    结果如下:
    在这里插入图片描述
    其中黑色就是我们复制的turtle②号,为了区别颜色一个为蓝一个就是初始颜色了。

    clearstamp()

    turtle.clearstamp(stampid)
    参数:

    • stampid :使用 stamp 复制一个自己后将会返回一个 stamp的id值,传入id值即可删除复制的对象。

    代码示例:

    from turtle import *
    
    turtle2=stamp()
    color("blue")
    goto(100,0)
    clearstamp(turtle2)
    input()
    

    代码释义:
    turtle2=stamp():接收返回的stampid
    clearstamp(turtle2):删除复制的turtle
    运行结果:
    在这里插入图片描述

    clearstamps()

    turtle.clearstamps(n=None)
    参数: 一个整数或者为空
    删除复制的turtle的全部或前/后n个。如果n为空,则删除所有turtle;如果n>0,则删除前n个;如果n<0,则删除后n个。
    代码示例:

    from turtle import *
    import time
    
    for i in range(8):
        stamp(); 
        fd(10)
        
    time.sleep(1)
    clearstamps(2)
    time.sleep(1)
    clearstamps(-2)
    time.sleep(1)
    clearstamps()
    input()
    

    代码释义:
    for i in range(8):循环创建8个turtle,每个走10步;注意,复制的时候是已最主要的turtle为主,并且复制的时候会得到当前位置的信息,会在作为主体的turtle位置出现。
    time.sleep(1):为了能够更好的看见效果所加的暂停代码。
    clearstamps(2):删除前2个turtle
    clearstamps(-2):删除后2个turtle
    clearstamps():删除全部复制的turtle

    运行结果:
    在这里插入图片描述

    undo()

    turtle.undo()
    撤销上一个turble的操作。
    代码示例:

    from turtle import *
    import time
    
    fd(100)
    left(160)
    fd(100)
    time.sleep(1)
    undo()
    input()
    

    代码释义:
    undo():撤回上一步
    运行结果:
    在这里插入图片描述

    speed()

    turtle.speed(speed=None)
    参数:

    • speed:0-10范围内的整数。

    设置turtle的运动速度。超过范围则为0。官方文档给了一个速度值快慢的参考,并且可以用标识当作参数传入,如下:

    • “fastest”: 0
    • “fast”: 10
    • “normal”: 6
    • “slow”: 3
    • “slowest”: 1

    代码示例:

    from turtle import *
    import time
    
    speed('fastest')#或者使用0
    circle(100)
    input()
    

    代码释义:
    speed('fastest'):使用最快的速度,也可以用0代替
    运行结果(一下举例了2个不同值的结果):
    在这里插入图片描述
    在这里插入图片描述

    笔控制

    绘制状态

    penup() | pu() | up()

    turtle.penup()
    turtle.pu()
    turtle.up()
    移动时不绘制。
    代码示例:

    from turtle import *
    import time
    
    penup()
    speed('normal')#也可以使用0代替
    circle(100)
    input()
    

    代码释义:
    penup():使用后以下移动时不会进行绘制。
    运行结果:
    在这里插入图片描述

    pendown() | pd() | down()

    turtle.pendown()
    turtle.pd()
    turtle.down()
    移动时绘制。
    代码示例:

    from turtle import *
    import time
    
    penup()
    circle(100)
    pendown()
    circle(100)
    input()
    

    代码释义:
    pendown():接着上一小点的代码,走一圈后不绘制,最后又画一圈绘制。
    运行结果:
    在这里插入图片描述

    pensize() | width()

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

    • width:线条宽度,可以为空

    设置线条宽度,或将其返回。
    代码示例:

    from turtle import *
    import time
    
    pensize(10)  
    circle(100)
    input()
    

    代码释义:
    pensize(10) :设置代码的宽度,使用width方法结果相同
    运行结果:
    在这里插入图片描述

    pen()

    turtle.pen(pen=None, **pendict)
    参数:

    • pen – 有特定标识值
    • pendict :有多个关键字参数

    设置pen的相关方法。
    以下为官方给出的设置值:

    • “shown”: True/False
    • “pendown”: True/False
    • “pencolor”: color-string or color-tuple
    • “fillcolor”: color-string or color-tuple
    • “pensize”: positive number
    • “speed”: number in range 0…10
    • “resizemode”: “auto” or “user” or “noresize”
    • “stretchfactor”: (positive number, positive number)
    • “outline”: positive number
    • “tilt”: number

    可在一条语句中设置多个属性。
    代码示例:

    from turtle import *
    import time
    
    pen(speed=10, pencolor="red", pensize=10)
    circle(100)
    input()
    

    代码释义:
    pen(speed=10, pencolor="red", pensize=10):设置pen(笔)的绘制速度为10,颜色为红色,线条大小为10.
    运行结果:
    在这里插入图片描述

    isdown()

    turtle.isdown()
    判断比是否抬起或放下,换句话解释就是判断是否移动时绘制,如果绘制返回 True 否则返回 False。
    代码示例:

    from turtle import *
    import time
    
    pen(speed=10, pencolor="red", pensize=10)
    circle(100)
    print(isdown())
    penup()
    pen(speed=10, pencolor="red", pensize=10)
    circle(100)
    print(isdown())
    input()
    

    代码释义:
    print(isdown()):在默认情况下是绘制的,输出笔是否放下,输出Ture
    penup():使用penup()抬起笔,移动时不会只,此时输出False
    运行结果:
    在这里插入图片描述

    颜色控制

    pencolor()

    turtle.pencolor(*args)
    返回当前线条设置的颜色或设置线条的颜色。
    pencolor可传参与不传参:

    • pencolor():不传参返回当前颜色的设置
    • pencolor(colorstring):可以传入字符串设置颜色值
    • pencolor((r, g, b)):传入一个元组值进行设置
    • pencolor(r, g, b):直接赋予r、g、b值

    代码示例:

    from turtle import *
    import time
    
    pencolor("brown")
    circle(100)
    input()
    

    代码释义:
    pencolor("brown"):设置颜色后画圆
    也可以使用rgb传入颜色:

    from turtle import *
    import time
    
    tup = (0.2, 0.8, 0.55)
    pencolor(tup)
    circle(100)
    input()
    

    运行结果:
    在这里插入图片描述

    fillcolor()

    turtle.fillcolor(*args)
    返回设置的颜色或设置turtle的颜色。
    fillcolor可传参与不传参:

    • fillcolor():不传参返回当前颜色的设置
    • fillcolor(colorstring):可以传入字符串设置颜色值
    • fillcolor((r, g, b)):传入一个元组值进行设置
    • fillcolor(r, g, b):直接赋予r、g、b值

    color()

    turtle.color(*args)
    返回设置笔的颜色或设置填充颜色。
    color可传参与不传参:

    • color():不传参返回当前颜色的设置
    • color(colorstring):可以传入字符串设置颜色值
    • color(colorstring), color((r,g,b)):传入2个rgb值一个设置turtle颜色一个设置绘制线条颜色
    • color(colorstring1, colorstring2):传入2个字符串值一个设置turtle颜色一个设置绘制线条颜色

    代码示例:

    from turtle import *
    import time
    
    color("red", "blue")
    circle(100)
    input()
    

    代码释义:
    color("red", "blue"):设置线条为红色,turtle为蓝色
    运行结果:
    在这里插入图片描述

    begin_fill()/end_fill()

    turtle.begin_fill()
    开始填充颜色。
    turtle.end_fill()
    结束填充颜色。
    代码示例:

    from turtle import *
    import time
    
    color("black", "red")
    begin_fill()
    circle(100)
    end_fill()
    input()
    
    

    代码释义:
    begin_fill():开始填充,这个需要放在图形绘制之前。
    end_fill():结束绘制,一定要加不然不会进行填充。
    运行结果:
    在这里插入图片描述

    更多绘制控制

    reset()

    turtle.reset()
    从屏幕上删除turtle,并将海龟重新居中,充值所有值。
    代码示例:

    from turtle import *
    import time
    
    fd(100)
    left(30)
    fd(100)
    time.sleep(1)
    reset()
    input()
    

    代码释义:
    time.sleep(1):停止一秒对比效果
    reset():重置
    运行结果:
    在这里插入图片描述

    clear()

    turtle.clear()
    清除屏幕绘制线条。并不影响turtle位置。
    代码示例:

    from turtle import *
    import time
    
    fd(100)
    left(30)
    fd(100)
    time.sleep(1)
    clear()
    input()
    

    代码释义:
    clear():清除以上绘制效果
    运行结果:
    在这里插入图片描述

    write()

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

    • arg – 你想输出到屏幕的值
    • move – True/False 输出值时是否移动
      align – 对齐方式
      font – 字体样式类别

    输出值到屏幕上,可以设置字体以及对齐方式。
    代码示例:

    from turtle import *
    import time
    
    fd(100)
    left(30)
    fd(100)
    time.sleep(1)
    write("你好呀", False, align="center")
    input()
    

    代码释义:
    write("你好呀", False, align="center"):显示你好呀,但是在显示值的时候不会移动,对其方式为居中对齐。
    运行结果:
    在这里插入图片描述
    write("你好呀", False, align="center")改为write("你好呀", True, align="center"),使输出值时turtle移动。
    在这里插入图片描述

    Turtle 状态

    hideturtle()|showturtle()|isvisible()

    turtle.hideturtle()
    turtle.ht()
    设置turtle是否可见。
    代码示例:

    from turtle import *
    import time
    
    hideturtle()
    input()
    

    代码释义:
    hideturtle():使turtle不可见
    运行结果:
    在这里插入图片描述

    showturtle()

    turtle.showturtle()
    turtle.st()
    使turtle可见。
    代码示例:

    from turtle import *
    import time
    
    hideturtle()
    time.sleep(1)
    showturtle()
    input()
    

    代码释义:
    showturtle():设置turtle可见。
    运行结果:
    在这里插入图片描述

    turtle.isvisible()

    判断turtle是否显示。
    代码示例:

    from turtle import *
    import time
    
    hideturtle()
    print(isvisible())
    time.sleep(1)
    showturtle()
    print(isvisible())
    input()
    

    代码释义:
    print(isvisible()):读取状态,显示为True否则为False
    运行结果:
    在这里插入图片描述

    外观

    shape()

    turtle.shape(name=None)
    参数:

    • name:有效的形状名称 将turtle
      shape设置为具有给定名称的形状,如果未指定名称,则返回当前形状的名称。名称为的形状必须存在于TurtleScreen的形状字典中。默认有以下多边形形状:“箭头”、“乌龟”、“圆”、“正方形”、“三角形”、“经典”。设置成什么turtle就会变成什么形状。

    代码示例:

    from turtle import *
    import time
    
    shape("turtle")
    input()
    

    代码释义:
    shape("turtle"):将turtle设置成乌龟形状
    运行结果:
    在这里插入图片描述

    shapesize()

    turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)
    参数:

    • stretch_wid:y轴拉伸
    • stretch_len:x轴拉伸
    • outline:边缘拉伸

    可以设置turtle的拉升。
    代码示例:

    from turtle import *
    import time
    
    shapesize(15, 15, 112)
    fd(100)
    input()
    

    代码释义:
    shapesize(15, 15, 112):x轴拉伸15,y轴拉伸15,边缘拉伸112
    运行结果:
    在这里插入图片描述

    tilt()

    turtle.tilt(angle)
    参数:

    • angle:角度

    改变箭头方向,但不改变turtle方向。
    代码示例:

    from turtle import *
    import time
    
    tilt(30)
    fd(111)
    input()
    

    代码释义:
    tilt(30):turtle旋转角度,但不改变行动方向。
    运行结果:
    在这里插入图片描述

    事件

    onclick()

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

    • fun :响应的函数
    • btn:点击的数量可为空
    • add: True或False 添加新绑定,否则将替换以前的绑定
      为turtle绑定一个点击事件。

    代码示例:

    from turtle import *
    import time
    
    def turn(x, y):
        left(180)
    
    onclick(turn)
    input()
    

    代码释义:
    onclick(turn):每次点击调用turn函数,转动180°。
    运行结果:
    在这里插入图片描述

    onrelease()

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

    • fun :响应的函数
    • btn:点击的数量可为空
    • add: True或False 添加新绑定,否则将替换以前的绑定
      鼠标点击释放时响应某函数。

    代码示例:

    from turtle import *
    import time
    
    def turn(x, y):
        left(180)
    def turn_(x, y):
        left(-180)
        
    onclick(turn)
    onrelease(turn_)
    input()
    

    代码释义:
    onrelease(turn_):鼠标释放后执行turn_函数
    运行结果:
    在这里插入图片描述

    ondrag()

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

    • fun :响应的函数
    • btn:点击的数量可为空
    • add: True或False 添加新绑定,否则将替换以前的绑定

    拖拽时响应。
    代码示例:

    from turtle import *
    import time
    
    ondrag(goto)
    input()
    

    代码释义:
    ondrag(goto):拖动时执行goto
    运行结果:
    在这里插入图片描述

    一些特别的Turtle方法

    clone()

    turtle.clone()
    克隆并返回具有相同属性的turtle。
    代码示例:

    from turtle import *
    import time
    
    mick = Turtle()
    joe = mick.clone()
    mick.goto(111,0)
    joe.goto(0,111)
    input()
    

    代码释义:
    mick = Turtle():创建一个turtle实例
    joe = mick.clone():克隆这个mick实例
    mick.goto(111,0):mick这个turtle往x为111y为0的坐标移动
    joe.goto(0,111):joe这个turtle往y为111x为0的坐标移动
    运行结果:
    在这里插入图片描述

    getturtle()|getpen()

    turtle.getturtle()
    turtle.getpen()
    返回当前turtle的实例
    代码示例:

    from turtle import *
    import time
    
    pet = getturtle()
    pet.fd(50)
    input()
    

    代码释义:
    pet = getturtle():得到当前turtle的对象
    运行结果:
    在这里插入图片描述

    setundobuffer()

    turtle.setundobuffer(size)
    参数:

    • size:大小 设置缓冲区大小。使用undo撤销缓冲区turtle的动作数,如果size为None则禁用撤销。

    代码示例:

    from turtle import *
    import time
    
    setundobuffer(42)
    input()
    

    undobufferentries()

    返回缓冲区存储动作数数量。
    代码示例:

    from turtle import *
    import time
    
    fd(111)
    left(10)
    fd(11)
    print(undobufferentries())
    input()
    

    代码释义:
    print(undobufferentries()):输出缓冲区中的动作数
    运行结果:
    在这里插入图片描述

    窗口控制

    bgcolor()

    turtle.bgcolor(*args)
    

    参数:

    • args:传入颜色代码或者标识猛,不传则为获取当前背景色 设置颜色或获取当前颜色。

    代码示例:

    from turtle import *
    
    bgcolor("orange")
    goto(10,0)
    input()
    

    代码释义:
    bgcolor("orange"):设置背景色为橘色
    运行结果:
    在这里插入图片描述

    bgpic()

    turtle.bgpic(picname=None)
    参数:

    • picname:不传则返回背景图片文件名,传入参数则设置背景图片,可传入文件名或路径

    代码示例:

    from turtle import *
    
    bgpic(r"C:\Users\Administrator\Desktop\timg1.jpg")
    goto(10,0)
    input()
    

    代码释义:
    bgpic(r"C:\Users\Administrator\Desktop\timg1.jpg"):设置背景图
    运行结果:
    在这里插入图片描述

    clear()|clearscreen()

    turtle.clear()
    turtle.clearscreen()
    屏幕清屏,但不移动turtle位置。
    代码示例:

    from turtle import *
    
    goto(100,0)
    clear()
    input()
    

    代码释义:
    clear():清除绘制内容
    运行效果:
    在这里插入图片描述

    clearscreen()

    清楚包括turtle在内的所有内容。
    运行结果:
    在这里插入图片描述

    reset()|resetscreen()

    turtle.reset()
    turtle.resetscreen()
    重置屏幕上turtle为初始状态。
    代码示例:

    from turtle import *
    import time
    
    goto(100,0)
    time.sleep(2)
    resetscreen()
    input()
    

    代码释义:
    resetscreen():重置turtle
    运行结果:在这里插入图片描述

    screensize()

    turtle.screensize(canvwidth=None, canvheight=None, bg=None)
    canvwidth:画布宽
    canvheight:画布长
    调整画布大小,使用滚动条查看超出可视窗体的内容。
    在这里插入图片描述
    代码示例:

    from turtle import *
    import time
    
    screensize(2000,1500)
    goto(1000,0)
    

    代码释义:
    screensize(2000,1500):调整画布宽为2000,长为1500
    运行结果:
    在这里插入图片描述
    setworlcoordinates()
    turtle.setworldcoordinates(llx, lly, urx, ury)
    参数:

    • llx:左下角x
    • lly:左下角y
    • urx:右上角x
    • ury:右下角y

    通过左下角和右下角的xy自定义坐标系。
    代码示例:

    from turtle import *
    
    setworldcoordinates(-10,-7.5,10,7.5)
    for _ in range(72):
        left(10)
    for _ in range(4):
        left(90); fd(5)
    input()
    

    代码释义:
    setworldcoordinates(-10,-7.5,10,7.5):自定义个小坐标系
    fd(5):在正常坐标系中绘制5个像素的距离过于小,自定义坐标系后,5个单位对比整个坐标系已经足够。
    运行结果:
    在这里插入图片描述

    动画控制

    delay()

    turtle.delay(delay=None)
    参数:

    • delay:正整数

    以毫秒为单位设置或返回绘图延迟。绘图延迟越长,动画越慢。
    代码示例:

    from turtle import *
    
    delay(100)
    fd(200)
    input()
    

    代码释义:
    delay(100):定义延时
    运行结果:
    在这里插入图片描述
    tracer()
    turtle.tracer(n=None, delay=None)
    参数

    • n:每n次屏幕更新
    • delay:延时

    打开/关闭turtle动画并为更新图形设置延迟。如果给定n,则仅真正执行第n次定期屏幕更新,可用于加速复杂图形的绘制。
    代码示例:

    from turtle import *
    
    tracer(100, 1)
    dist = 2
    for i in range(200):
         fd(dist)
         rt(90)
         dist += 2
    input()
    

    代码释义:
    tracer(100, 1):100次进行一次刷新屏幕
    运行结果:
    瞬间出现。
    在这里插入图片描述
    改为每1次刷新屏幕:tracer(100, 1)
    在这里插入图片描述

    屏幕事件

    listen()|onkey()|onkeyrelease()

    turtle.listen()
    turtle.onkey(fun, key)
    参数:

    • fun:执行的函数

    • key:响应事件

    listen开启监听,onkey响应事件。
    代码示例:

    from turtle import *
    
    def f():
         fd(50)
         lt(60)
    listen()
    onkey(f, "Up")
    
    input()
    

    代码释义:
    listen():开启监听事件
    onkey(f, "Up"):监听到键盘↑键按下,执行f函数
    运行结果:
    在这里插入图片描述

    ontimer()

    turtle.ontimer(fun, t=0)
    参数:

    • fun:函数
    • t:时间 定时t后调用fun。

    代码示例:

    from turtle import *
    def f():
        fd(200)
        left(110)
    
    ontimer(f,1000)
    input()
    

    代码释义:
    ontimer(f,1000):1秒后调用f函数
    运行结果:
    在这里插入图片描述

    输入方法

    textinput()

    turtle.textinput(title, prompt).
    参数:

    • title:对话框标题
    • prompt:描述输入文本

    弹出一个用于输入字符串的对话框窗口。参数title是对话框窗口的标题,propmt是一个主要描述要输入哪些信息的文本。返回字符串输入。如果对话框被取消,则返回空。
    代码示例:

    from turtle import *
    textinput("turtle", "你好!")
    input()
    

    代码释义:
    textinput("turtle", "你好!"):文本输入
    运行结果:
    在这里插入图片描述

    numinput()

    turtle.numinput(title, prompt, default=None, minval=None, maxval=None)
    参数:

    • title:标题
    • prompt:描述
    • minval:最小值
    • maxval:最大值
    • default:默认值

    弹出一个输入数字的对话框。title是对话框窗口的标题,prompt是一个主要描述要输入哪些数字信息的文本。默认值:默认值,最小值:输入的最小值,最大值:输入的最大值输入的数字必须在最小值的范围内。。如果这些是给定的,则为maxval。否则,将发出提示,对话框将保持打开以进行更正。返回数字输入。如果对话框被取消,则返回“无”。
    代码示例:

    from turtle import *
    
    numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
    input()
    

    代码释义:
    numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000):接收一个最小值10,最大值10000的数字,标题为Poker,提示为Your stakes,默认值为1000。
    运行结果:
    在这里插入图片描述

    设置以及特殊方法

    window_height()|window_width()
    获取屏幕宽高
    代码示例:

    from turtle import *
    
    print(window_height(),window_width())
    input()
    

    运行结果:在这里插入图片描述

    bye()|title()

    turtle.bye()
    窗口关闭。

    from turtle import *
    
    print(window_height(),window_width())
    input()
    bye()
    input()
    

    title(context)
    context为要显示的文本,使用title设置标题。

    setup ()

    turtle.setup(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"])
    参数:

    • width:窗口宽
    • height:窗口高
    • startx:出现位置的x坐标
    • starty:出现位置的y坐标

    代码示例:

    from turtle import *
    
    setup (width=200, height=200, startx=600, starty=400)
    input()
    

    运行结果:

    在这里插入图片描述

    欢迎点赞、收藏、关注;
    如有错误可在评论区指出,谢谢!

    展开全文
    A757291228 2020-05-02 23:10:59
  • 1.介绍Turtle graphics是向孩子们介绍编程的一种流行方式。它是Wally Feurzig和Seymour Papert于1966年开发的原始Logo编程语言的一部分。想象一下robotic turtle从x-y平面的(0,0)开始。 在导入乌龟后,给它命令...

    1.介绍

    Turtle graphics是向孩子们介绍编程的一种流行方式。它是Wally Feurzig和Seymour Papert于1966年开发的原始Logo编程语言的一部分。

    想象一下robotic turtle从x-y平面的(0,0)开始。 在导入乌龟后,给它命令turtle.forward(15),它在它面对的方向上移动(在屏幕上)15个像素,在它移动时画一条线。 给它命令turtle.right(25),它顺时针旋转25度。

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

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

    它试图保持旧乌龟模块的优点,并且(几乎)100%兼容它。这首先意味着学习程序员可以交互式地使用所有命令,类和方法-n。

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

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

    TurtleScreen类将绘图窗口定义为绘图turtle的操场。 它的构造函数需要一个Tkinter.Canvas或一个ScrolledCanvas作为参数。 当应用程序使用turtle时应该使用它。

    函数Screen()返回一个TurtleScreen子类的单例对象。 当turtle被用作独立的图形工具时,应该使用这个函数。 作为一个单例对象,从它的类继承是不可能的。

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

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

    派生自RawTurtle的是子类Turtle(别名:),该子类使用自动创建Pen的“ Screen实例” (如果尚未存在)。

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

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

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

    注意

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

    2.概述了可用的turtle和屏幕方法

    2.1 turtle方法

    Turtle motionMove and drawTell Turtle's stateSetting and measurementPen control绘图状态颜色控制填充更多绘图控制驼背状态可见性外观使用事件特殊的turtle法

    2.2 TurtleScreen / Screen的方法

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

    3. RawTurtle / Turtle的方法和相应的功能

    本节中的大部分示例都涉及一个叫做Turtle的实例。

    3.1 turtle议案

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

    参数:距离 - 一个数字(整数或浮点数)

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

    参数:距离 - 一个数字

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

    参数:角度 - 一个数字(整数或浮点数)

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

    参数:角度 - 一个数字(整数或浮点数)

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

    参数:x - 一个数字或一对数字y的数字 - 一个数字或无

    x - 一个数字或一对数字

    y - 一个数字或None

    If _y_ is `None`, _x_ must be a pair of coordinates or a [`Vec2D`](about:blank#turtle.Vec2D) (e.g. as returned by [`pos()`](about:blank#turtle.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.sety(y)

    参数:y - 一个数字(整数或浮点数)

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

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

    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)

    参数:半径 - 数字范围 - 数字(或无)步骤 - 整数(或无)

    半径 - 一个数字

    程度 - 一个数字(或None)

    步骤 - 整数(或None)

    Draw a circle with given _radius_. The center is _radius_ units left of the turtle; _extent_ – an angle – determines which part of the circle is drawn. If _extent_ is not given, draw the entire circle. If _extent_ is not a full circle, one endpoint of the arc is the current pen position. Draw the arc in counterclockwise direction if _radius_ is positive, otherwise in clockwise direction. Finally the direction of the turtle is changed by the amount of _extent_.

    由于圆是用刻有正多边形的近似值,所以步数决定了要使用的步数。如果没有给出,它会自动计算。可用于绘制正多边形。

    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 - 一个颜色字符串或一个数字颜色元组

    大小 - 一个整数> = 1(如果给出)

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

    Draw a circular dot with diameter _size_, using _color_. If _size_ is not given, the maximum of pensize+4 and 2\*pensize is used.

    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,可以通过调用将其删除clearstamp(stamp_id)。

    >>> turtle.color("blue")

    >>> turtle.stamp()

    11

    >>> turtle.fd(50)

    turtle.clearstamp(stampid)

    参数:stampid - 一个整数,必须是以前的stamp()调用的返回值

    turtle.clearstamps(n=None)

    参数:n - 整数(或无)

    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)

    参数:速度 - 范围为0..10的整数或速度串(见下文)

    “fastest”: 0

    “fast”: 10

    “normal”: 6

    “slow”: 3

    “slowest”: 1

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

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

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

    3.2。告诉turtle的状态

    turtle.position()turtle.pos()

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

    >>> turtle.pos()

    (440.00,-0.00)

    turtle.towards(x, y=None)

    参数:x - 一个数字或一对数字或一个乌龟实例的向量y - 一个数字,如果x是一个数字,否则无

    x - 一个数字或一对数字或一个turtle实例的向量

    y - 如果x是数字,则为数字,否则None

    Return the angle between the line from turtle position to position specified by (x,y), the vector or the other turtle. This depends on the turtle’s start orientation which depends on the mode - “standard”/”world” or “logo”).

    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)

    参数:x - 一个数字或一对数字或一个乌龟实例的向量y - 一个数字,如果x是一个数字,否则无

    x - 一个数字或一对数字或一个turtle实例的向量

    y - 如果x是数字,则为数字,否则None

    Return the distance from the turtle to (x,y), the given vector, or the given other turtle, in turtle step units.

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

    3.3 测量设置

    turtle.degrees(fullcircle=360.0)

    参数:全圆 - 一个数字

    turtle.radians()

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

    >>> turtle.home()

    >>> turtle.left(90)

    >>> turtle.heading()

    90.0

    >>> turtle.radians()

    >>> turtle.heading()

    1.5707963267948966

    3.4 笔控制

    3.4.1 绘图状态

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

    拉下笔 - 移动时绘图。

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

    拉起笔 - 移动时无图。

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

    参数:宽度 - 一个正数

    turtle.pen(pen=None, **pendict)

    参数:笔 - 包含部分或全部下列键的字典pendict - 一个或多个关键字参数,其中以下列出的键为关键字

    笔 - 包含部分或全部下列键的字典

    pendict - 一个或多个关键字参数,下面列出的关键字为关键字

    Return or set the pen’s attributes in a “pen-dictionary” with the following key/value pairs:

    “显示”:真/假

    “pendown”:真/假

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

    “fillcolor”:颜色字符串或颜色元组

    “pensize”:正数

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

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

    “stretchfactor”:(正数,正数)

    “outline”:正数

    “tilt”:数字

    该字典可以用作后续调用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

    3.4.2 颜色控制

    turtle.pencolor(*args)

    返回或设置pencolor。

    允许四种输入格式:

    pencolor()将当前的pencolor作为颜色指定字符串或作为元组返回(请参见示例)。 可用作另一种颜色的输入/ pencolor / fillcolor call.pencolor(colorstring)将pencolor设置为诸如“red”,“yellow”或“#33cc8c”.pencolor(( r,g,b))将pencolor设置为由r,g和b的元组表示的RGB颜色。 pencolor(r,g,b)将pencolor设置为由r表示的RGB颜色,其中r,g和b必须位于0..colormode范围内,其中colormode为1.0或255(参见colormode() g和b。 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)

    返回或设置fillcolor。

    允许四种输入格式:

    fillcolor()返回当前的fillcolor作为颜色规格字符串,可能以元组格式(请参阅示例)。 可用作另一种颜色的输入/ pencolor / fillcolor call.fillcolor(colorstring)将fillcolor设置为诸如“red”,“yellow”或“#33cc8c”.fillcolor(( r,g,b))将fillcolor设置为由r,g和b的元组表示的RGB颜色。 fillcolor(r,g,b)将fillcolor设置为由r表示的RGB颜色,其中,颜色模式为1.0或255(参见colormode() g和b。 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。

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

    color()返回当前的pencolor和当前的fillcolor作为由pencolor()和fillcolor().color(colorstring),color((r,g,b))返回的颜色指定字符串或元组, g,b)如pencolor()中的输入,将fillcolor和pencolor设置为给定的值.color(colorstring1,colorstring2),color((r1,g1,b1),(r2,g2,b2))Equivalent 到pencolor(colorstring1)和fillcolor(colorstring2),并且类似地使用其他输入格式。

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

    >>> turtle.color("red", "green")

    >>> turtle.color()

    ('red', 'green')

    >>> color("#285078", "#a0c8f0")

    >>> color()

    ((40, 80, 120), (160, 200, 240))

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

    3.4.3 填充

    turtle.fill(flag)

    参数:标志 - 真/假(或分别为1/0)

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

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

    参数:arg - 要写入TurtleScreen的对象移动 - True / False对齐 - 其中一个字符串“left”,“center”或right“font - 三元组(fontname,fontsize,fonttype)

    arg - 要写入TurtleScreen的对象

    move - 真/假

    align - 其中一个字符串“左”,“中”或右“

    font - 一个三元组(fontname,fontsize,fonttype)

    Write text - the string representation of _arg_ - at the current turtle position according to _align_ (“left”, “center” or right”) and with the given font. If _move_ is true, the pen is moved to the bottom-right corner of the text. By default, _move_ is `False`.

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

    3.5 turtle状态

    3.5.1 可见

    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

    3.5.2 出现

    turtle.shape(name=None)

    参数:名称 - 一个有效形状名称的字符串

    turtle.resizemode(rmode=None)

    参数:rmode - 其中一个字符串“auto”,“user”,“noresize”

    “auto”:根据pensize的值调整turtle的外观。

    “用户”:根据由设置的stretchfactor和outlinewidth(outline)的值来调整turtle的外观shapesize()。

    “noresize”:没有适应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 - 正数大纲 - 正数

    stretch_wid - 正数

    stretch_len - 正数

    大纲 - 正数

    Return or set the pen’s attributes x/y-stretchfactors and/or outline. Set resizemode to “user”. If and only if resizemode is set to “user”, the turtle will be displayed stretched according to its stretchfactors: _stretch\_wid_ is stretchfactor perpendicular to its orientation, _stretch\_len_ is stretchfactor in direction of its orientation, _outline_ determines the width of the shapes’s 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)

    参数:角度 - 一个数字

    turtle.settiltangle(angle)

    参数:角度 - 一个数字

    turtle.tiltangle()

    返回当前的倾斜角度,即turtle的方向与turtle的方向(其移动方向)之间的角度。

    >>> turtle.reset()

    >>> turtle.shape("circle")

    >>> turtle.shapesize(5,2)

    >>> turtle.tilt(45)

    >>> turtle.tiltangle()

    45.0

    3.6 使用事件

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

    参数:fun - 一个带有两个参数的函数,将用画布上单击点的坐标调用num - 鼠标按钮的编号,默认为1(鼠标左键)add - True或False - 如果为True,则为新绑定将被添加,否则将取代以前的绑定

    fun - 一个带有两个参数的函数,这些参数将与画布上单击点的坐标一起调用

    num - 鼠标按钮的数量,默认为1(鼠标左键)

    add - True或False - 如果为True,将添加新绑定,否则将替换以前的绑定

    Bind _fun_ to mouse-click events on this turtle. If _fun_ is `None`, existing bindings are removed. Example for the anonymous turtle, i.e. the procedural way:

    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 - 一个带有两个参数的函数,将用画布上单击点的坐标调用num - 鼠标按钮的编号,默认为1(鼠标左键)add - True或False - 如果为True,则为新绑定将被添加,否则将取代以前的绑定

    fun - 一个带有两个参数的函数,这些参数将与画布上单击点的坐标一起调用

    num - 鼠标按钮的数量,默认为1(鼠标左键)

    add - True或False - 如果为True,将添加新绑定,否则将替换以前的绑定

    Bind _fun_ to mouse-button-release events on this turtle. If _fun_ is `None`, existing bindings are removed.

    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 - 一个带有两个参数的函数,将用画布上单击点的坐标调用num - 鼠标按钮的编号,默认为1(鼠标左键)add - True或False - 如果为True,则为新绑定将被添加,否则将取代以前的绑定

    fun - 一个带有两个参数的函数,这些参数将与画布上单击点的坐标一起调用

    num - 鼠标按钮的数量,默认为1(鼠标左键)

    add - True或False - 如果为True,将添加新绑定,否则将替换以前的绑定

    Bind _fun_ to mouse-move events on this turtle. If _fun_ is `None`, existing bindings are removed.

    备注:在乌龟上的每一个鼠标移动事件序列都在该乌龟的鼠标点击事件之前。

    turtle.ondrag(turtle.goto)

    随后,点击并拖动Turtle将在屏幕上移动,从而生成手绘图(如果笔落下)。

    turtle.mainloop()turtle.done()

    开始事件循环 - 调用Tkinter的mainloop函数。必须是Turtle图形程序中的最后一个语句。

    >>> turtle.mainloop()

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

    返回turtle正在绘制的TurtleScreen对象。 然后可以为该对象调用TurtleScreen方法。

    >>> ts = turtle.getscreen()

    >>> ts

    >>> ts.bgcolor("pink")

    turtle.setundobuffer(size)

    参数:大小 - 一个整数或None

    turtle.undobufferentries()

    返回undobuffer中的条目数。

    >>> while undobufferentries():

    ... undo()

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

    相应的TurtleScreen方法的副本。

    自2.6版以来已弃用。

    turtle.window_width()turtle.window_height()

    两者都是相应的TurtleScreen方法的副本。

    自2.6版以来已弃用。

    3.8 关于使用复合形状的附录

    要使用由多个不同颜色的多边形组成的复合turtle形状,您必须Shape明确地使用助手类,如下所述:

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

    使用该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")

    现在将Shape添加到屏幕的shapelist中并使用它:register_shape(“myshape”,s)>>> shape(“myshape”)注意Shape类由register_shape()方法以不同的方式在内部使用。只有在使用上面所示的复合形状时,应用程序员才能处理Shape类! TurtleScreen / Screen的方法和相应的函数本节中的大部分示例都涉及一个名为screen.4.1的TurtleScreen实例。 Window controlturtle.bgcolor(* args)参数:args - 颜色字符串或范围为0..colormode的三个数字或这样的数字的三元组.txt.txt(picname = None)参数:picname - 一个字符串,一个字符串的名称gif文件或“nopic”或Noneturtle.clear()turtle.clearscreen()从TurtleScreen中删除所有图形和所有的turtle。将现在为空的TurtleScreen重置为其初始状态:白色背景,无背景图像,无事件绑定和跟踪。注意此TurtleScreen方法仅在名称为clearscreen的情况下作为全局函数提供。全局函数清除是从Turtle方法派生的另一个方法clear.turtle.reset()turtle.resetscreen()将屏幕上的所有turtle重置为其初始状态。注意此TurtleScreen方法仅在名称为resetscreen的情况下作为全局函数提供。全局函数reset是从Turtle方法派生的另一个方法reset.turtle.screensize(canvwidth = None,canvheight = None,bg = None)参数:canvwidth - 正整数,画布的新宽度(以像素为单位)canvheight - 正整数,以像素为单位的画布bg - colorstring或color-tuple,新的背景颜色

    canvwidth - 正整数,画布的新宽度(以像素为单位)

    canvheight - 正整数,以像素为单位的画布新高度

    bg - colorstring或color-tuple,新的背景颜色

    If no arguments are given, return current (canvaswidth, canvasheight). Else resize the canvas the turtles are drawing on. Do not alter the drawing window. To observe hidden parts of the canvas, use the scrollbars. With this method, one can make visible those parts of a drawing which were outside the canvas before.

    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坐标画布的右上角

    llx - 一个数字,画布左下角的x坐标

    lly - 画布左下角的数字,y坐标

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

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

    Set up user-defined coordinate system and switch to mode “world” if necessary. This performs a `screen.reset()`. If mode “world” is already active, all drawings are redrawn according to the new coordinates.

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

    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

    4.2 动画控制

    turtle.delay(delay=None)

    参数:延迟 - 正整数

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

    参数:n - 非负整数延迟 - 非负整数

    n - 非负整数

    延迟 - 非负整数

    Turn turtle animation on/off and set delay for update drawings. If _n_ is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second argument sets delay value (see [`delay()`](about:blank#turtle.delay)).

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

    turtle.update()

    执行TurtleScreen更新。在示踪剂关闭时使用。

    另见RawTurtle / Turtle方法speed()。

    4.3 使用屏幕事件

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

    将注意力集中在TurtleScreen(为了收集关键事件)。提供虚拟参数是为了能够传递listen()给onclick方法。

    turtle.onkey(fun, key)

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

    fun - 一个没有参数或功能的函数None

    键 - 字符串:键(例如“a”)或键符号(例如“空格”)

    Bind _fun_ to key-release event of key. If _fun_ is `None`, event bindings are removed. Remark: in order to be able to register key-events, TurtleScreen must have the focus. (See method [`listen()`](about:blank#turtle.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)

    参数:fun - 一个带有两个参数的函数,将用画布上单击点的坐标调用num - 鼠标按钮的编号,默认为1(鼠标左键)add - True或False - 如果为True,则为新绑定将被添加,否则将取代以前的绑定

    fun - 一个带有两个参数的函数,这些参数将与画布上单击点的坐标一起调用

    num - 鼠标按钮的数量,默认为1(鼠标左键)

    add - True或False - 如果为True,将添加新绑定,否则将替换以前的绑定

    Bind _fun_ to mouse-click events on this screen. If _fun_ is `None`, existing bindings are removed.

    示例名为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 - 数字> = 0

    Install a timer that calls _fun_ after _t_ milliseconds.

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

    4.4 设置和特殊方法

    turtle.mode(mode=None)

    参数:模式 - 其中一个字符串“标准”,“标识”或“世界”

    turtle.colormode(cmode=None)

    参数:cmode - 其中一个值为1.0或255

    turtle.getcanvas()

    返回此TurtleScreen的画布。对于知道如何处理Tkinter帆布的内部人士非常有用。

    >>> cv = screen.getcanvas()

    >>> cv

    turtle.getshapes()

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

    >>> screen.getshapes()

    ['arrow', 'blank', 'circle', ..., 'turtle']

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

    有三种不同的方法可以调用这个函数:

    name是gif文件的名称,shape是None:安装相应的图像shape.screen.register_shape(“turtle.gif”)注意转动turtle时图像形状不旋转,因此它们不会显示turtle的标题!

    name是一个任意字符串,shape是坐标对的元组:安装相应的多边形形状。

    screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))

    名称是一个任意字符串,形状是一个(复合)形状对象:安装相应的复合形状。将turtle形添加到TurtleScreen的形状列表中。只有如此注册的形状可以通过发布命令形状(形状名称)来使用.turtle.turtles()返回屏幕上的turtle的列表。>>> for the screen in the screen.turtles():

    ... turtle.color(“red”)turtle.window_height()返回turtle窗口的高度>>> screen.window_height()

    480turtle.window_width()返回turtle窗口的宽度>>> screen.window_width()

    6404.5。特定于屏幕的方法,不从TurtleScreenturtle.bye()继承。关闭turtlegraphics window.turtle.exitonclick()在屏幕上绑定bye()方法以鼠标点击。如果配置字典中的值“using_IDLE”为False(默认值),也输入主循环。备注:如果使用带-n开关的IDLE(无子处理),则应在turtle.cfg中将此值设置为True。在这种情况下,IDLE自身的主循环也对客户端有效。script.turtle.setup(width = _CFG [“width”],height = _CFG [“height”],startx = _CFG [“leftright”],starty = _CFG [ topbottom“])设置主窗口的大小和位置。参数的默认值存储在配置字典中,并可通过turtle.cfg文件进行更改。参数:width - 如果是整数,则以像素为单位,如果是浮点,则为屏幕的一部分;默认是屏幕高度的50% - 如果是整数,高度以像素为单位,如果是浮点,则屏幕的一小部分;默认值是屏幕startx的75% - 如果是正值,则以屏幕左边缘的起始位置(以像素为单位),如果从右边缘为负,则如果为None,则中心窗口水平开始 - 如果为正值,则以屏幕,如果从底部边缘为负,如果无,垂直居中窗口

    宽度 - 如果是整数,则以像素为单位,如果是浮点,屏幕的一部分; 默认为屏幕的50%

    高度 - 如果是整数,高度以像素为单位,如果是浮点数,则为屏幕的一小部分; 默认是屏幕的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 图形窗口的标题栏中的字符串

    5.模块turtle的公共类

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

    参数:画布 - Tkinter.Canvas,ScrolledCanvas或TurtleScreen

    class turtle.Turtle

    RawTurtle的子类,具有相同的界面,但是Screen第一次需要时会自动创建一个默认对象。

    class turtle.TurtleScreen(cv)

    参数:cv - 一个Tkinter.Canvas

    class turtle.Screen

    TurtleScreen的子类,添加了四种方法。

    class turtle.ScrolledCanvas(master)

    参数:主 - 一些Tkinter小部件包含ScrolledCanvas,即添加了滚动条的Tkinter-canvas

    class turtle.Shape(type_, data)

    Parameters:type_ – one of the strings “polygon”, “image”, “compound”

    poly - 一个多边形,即数字对的元组

    填充 - 聚合物将填充的颜色

    轮廓 - poly的轮廓颜色(如果有的话)

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

    请参阅Excursus关于复合形状的使用。

    class turtle.Vec2D(x, y)

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

    Provides (for a, b vectors, k number):

    a + b 矢量添加

    a - b 矢量减法

    a * b 内产物

    k * a与a * k标量相乘

    abs(a) a的绝对值

    a.rotate(angle) 回转

    6.帮助和配置

    6.1 如何使用帮助

    Screen和Turtle类的公共方法通过文档大量记录。所以这些可以通过Python帮助工具作为在线帮助使用:

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

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

    帮助(Screen.bgcolor)模块turtle中的方法bgcolor的帮助:bgcolor(self,* args)unbound turtle.Screen方法设置或返回TurtleScreen的backgroundcolor。参数(如果给出):一个颜色字符串或范围为0 ... colormode的三个数字或这种数字的三元组。>>> screen.bgcolor(“orange”)>>> screen.bgcolor()“orange”>>> screen.bgcolor(0.5,0,0.5)>>> screen.bgcolor()“#800080”>>>帮助(Turtle.penup)模块turtle中的方法penup的帮助:penup(self)unbound turtle.Turtle方法拉起笔 - 移动时不绘制。别名:penup | pu | up没有参数>>> turtle.penup()

    从方法派生的函数的docstrings有一个修改后的形式:help(bgcolor)帮助模块turtle中的函数bgcolor:bgcolor(* args)设置或返回TurtleScreen的backgroundcolor。

    参数(如果给出):一个颜色字符串或范围为0 ... colormode的三个数字或这种数字的三元组。

    示例:: >>> bgcolor(“orange”)>>> bgcolor()“orange”>>> bgcolor(0.5,0,0.5)>>> bgcolor()“#800080”>>> help(penup)

    帮助on模块中的函数penup turtle:penup()将笔向上拉 - 移动时不绘制。别名:penup | pu | up没有参数例如:>>> penup()这些修改后的文档字符串会与导入时从方法派生的函数定义一起自动创建。文档字符串翻译成不同的语言有一个实用程序来创建一个字典,其中的关键字是方法名称,其值是类的公共方法的文档字符串和Turtle.turtle.write_docstringdict(filename =“turtle_docstringdict”)参数:filename - 一个字符串,用作文件名如果您(或您的学生)希望在您的母语中使用带有联机帮助的turtle,则必须翻译文档字符串并将结果文件保存为例如turtle_docstringdict_german.py。如果在turtle.cfg文件中有适当的条目,则此字典将在导入时读入,并将取代原来的英文文档字符串。在撰写本文时,有德文和意大利文的docstring字典。 (请向glingl@aon.at。)6.3。如何配置屏幕和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 = FalseShort explanation of selected entries:

    前四行对应于该Screen.setup()方法的参数。

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

    形状可以是任何内置形状,例如:箭头,乌龟等。欲了解更多信息,请尝试help(shape)。

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

    如果你想反映 turtle 的状态,你必须使用resizemode = auto。

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

    条目exampleturtle和examplescreen定义了这些对象在文档中出现的名称。方法文档字符串到函数文档字符串的转换将从文档字符串中删除这些名称。

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

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

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

    7.演示脚本

    Demo/turtle源分布目录中的turtledemo目录中有一组演示脚本。

    它包含:

    一组15个演示脚本,演示新模块的不同功能 turtle

    一个演示查看器turtleDemo.py,可用于查看脚本的源代码并同时运行它们。可以通过示例菜单访问14个示例; 它们全部也可以独立运行。

    这个例子turtledemo_two_canvases.py演示了在turtle 模块中同时使用两个画布。因此它只能独立运行。

    turtle.cfg这个目录中有一个文件,它也是如何编写和使用这些文件的例子。

    演示文稿是:

    名称描述特征bytedesigncomplex classical turtlegraphics patterntracer(), delay, update()

    chaosgraphs Verhulst dynamics, shows that computer’s computations can generate results sometimes against the common sense expectationsworld coordinates

    clockanalog clock showing time of your computerturtles as clock’s hands, ontimer

    colormixerexperiment with r, g, bondrag()

    fractalcurvesHilbert & Koch curvesrecursion

    lindenmayerethnomathematics (indian kolams)L-System

    minimal_hanoiTowers of HanoiRectangular Turtles as Hanoi discs (shape, shapesize)

    paintsuper minimalistic drawing programonclick()

    peaceelementaryturtle: appearance and animation

    penroseaperiodic tiling with kites and dartsstamp()

    planet_and_moonsimulation of gravitational systemcompound shapes, Vec2D

    treea (graphical) breadth first tree (using generators)clone()

    wikipediaa pattern from the wikipedia article on turtle graphicsclone(), undo()

    yingyanganother elementary examplecircle()

    展开全文
    weixin_39754831 2020-11-28 11:36:02
  • 源码:Lib/turtle.py 概述 海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。 请想象绘图区有一只机器海龟,起始位置在 ...

     

    源码: Lib/turtle.py


    概述

    海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。

    请想象绘图区有一只机器海龟,起始位置在 x-y 平面的 (0, 0) 点。先执行 import turtle,再执行 turtle.forward(15),它将(在屏幕上)朝所面对的 x 轴正方向前进 15 像素,随着它的移动画出一条线段。再执行 turtle.right(25),它将原地右转 25 度。

    Turtle star

    使用海龟绘图可以编写重复执行简单动作的程序画出精细复杂的形状。

    ../_images/turtle-star.png

    from turtle import *
    color('red', 'yellow')
    begin_fill()
    while True:
        forward(200)
        left(170)
        if abs(pos()) < 1:
            break
    end_fill()
    done()
    

    通过组合使用此类命令,可以轻松地绘制出精美的形状和图案。

    turtle 模块是基于 Python 标准发行版 2.5 以来的同名模块重新编写并进行了功能扩展。

    新模块尽量保持了原模块的特点,并且(几乎)100%与其兼容。这就意味着初学编程者能够以交互方式使用模块的所有命令、类和方法——运行 IDLE 时注意加 -n 参数。

    turtle 模块提供面向对象和面向过程两种形式的海龟绘图基本组件。由于它使用 tkinter 实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。

    面向对象的接口主要使用“2+2”个类:

    1. TurtleScreen 类定义图形窗口作为绘图海龟的运动场。它的构造器需要一个 tkinter.Canvas 或 ScrolledCanvas 作为参数。应在 turtle 作为某个程序的一部分的时候使用。

      Screen() 函数返回一个 TurtleScreen 子类的单例对象。此函数应在 turtle 作为独立绘图工具时使用。作为一个单例对象,其所属的类是不可被继承的。

      TurtleScreen/Screen 的所有方法还存在对应的函数,即作为面向过程的接口组成部分。

    2. RawTurtle (别名: RawPen) 类定义海龟对象在 TurtleScreen 上绘图。它的构造器需要一个 Canvas, ScrolledCanvas 或 TurtleScreen 作为参数,以指定 RawTurtle 对象在哪里绘图。

      从 RawTurtle 派生出子类 Turtle (别名: Pen),该类对象在 Screen 实例上绘图,如果实例不存在则会自动创建。

      RawTurtle/Turtle 的所有方法也存在对应的函数,即作为面向过程的接口组成部分。

    过程式接口提供与 Screen 和 Turtle 类的方法相对应的函数。函数名与对应的方法名相同。当 Screen 类的方法对应函数被调用时会自动创建一个 Screen 对象。当 Turtle 类的方法对应函数被调用时会自动创建一个 (匿名的) Turtle 对象。

    如果屏幕上需要有多个海龟,就必须使用面向对象的接口。

    注解

     

    以下文档给出了函数的参数列表。对于方法来说当然还有额外的第一个参数 self,这里省略了。

    可用的 Turtle 和 Screen 方法概览

    Turtle 方法

    海龟动作

    移动和绘制

    forward() | fd() 前进

    backward() | bk() | back() 后退

    right() | rt() 右转

    left() | lt() 左转

    goto() | setpos() | setposition() 前往/定位

    setx() 设置x坐标

    sety() 设置y坐标

    setheading() | seth() 设置朝向

    home() 返回原点

    circle() 画圆

    dot() 画点

    stamp() 印章

    clearstamp() 清除印章

    clearstamps() 清除多个印章

    undo() 撤消

    speed() 速度

    获取海龟的状态

    position() | pos() 位置

    towards() 目标方向

    xcor() x坐标

    ycor() y坐标

    heading() 朝向

    distance() 距离

    设置与度量单位

    degrees() 角度

    radians() 弧度

    画笔控制

    绘图状态

    pendown() | pd() | down() 画笔落下

    penup() | pu() | up() 画笔抬起

    pensize() | width() 画笔粗细

    pen() 画笔

    isdown() 画笔是否落下

    颜色控制

    color() 颜色

    pencolor() 画笔颜色

    fillcolor() 填充颜色

    填充

    filling() 是否填充

    begin_fill() 开始填充

    end_fill() 结束填充

    更多绘图控制

    reset() 重置

    clear() 清空

    write() 书写

    海龟状态

    可见性

    showturtle() | st() 显示海龟

    hideturtle() | ht() 隐藏海龟

    isvisible() 是否可见

    外观

    shape() 形状

    resizemode() 大小调整模式

    shapesize() | turtlesize() 形状大小

    shearfactor() 剪切因子

    settiltangle() 设置倾角

    tiltangle() 倾角

    tilt() 倾斜

    shapetransform() 变形

    get_shapepoly() 获取形状多边形

    使用事件

    onclick() 当鼠标点击

    onrelease() 当鼠标释放

    ondrag() 当鼠标拖动

    特殊海龟方法

    begin_poly() 开始记录多边形

    end_poly() 结束记录多边形

    get_poly() 获取多边形

    clone() 克隆

    getturtle() | getpen() 获取海龟画笔

    getscreen() 获取屏幕

    setundobuffer() 设置撤消缓冲区

    undobufferentries() 撤消缓冲区条目数

    TurtleScreen/Screen 方法

    窗口控制

    bgcolor() 背景颜色

    bgpic() 背景图片

    clear() | clearscreen() 清屏

    reset() | resetscreen() 重置

    screensize() 屏幕大小

    setworldcoordinates() 设置世界坐标系

    动画控制

    delay() 延迟

    tracer() 追踪

    update() 更新

    使用屏幕事件

    listen() 监听

    onkey() | onkeyrelease() 当键盘按下并释放

    onkeypress() 当键盘按下

    onclick() | onscreenclick() 当点击屏幕

    ontimer() 当达到定时

    mainloop() | done() 主循环

    设置与特殊方法

    mode() 模式

    colormode() 颜色模式

    getcanvas() 获取画布

    getshapes() 获取形状

    register_shape() | addshape() 添加形状

    turtles() 所有海龟

    window_height() 窗口高度

    window_width() 窗口宽度

    输入方法

    textinput() 文本输入

    numinput() 数字输入

    Screen 专有方法

    bye() 退出

    exitonclick() 当点击时退出

    setup() 设置

    title() 标题

    RawTurtle/Turtle 方法和对应函数

    本节中的大部分示例都使用 Turtle 类的一个实例,命名为 turtle

    海龟动作

    turtle.forward(distance)

    turtle.fd(distance)

    参数

    distance -- 一个数值 (整型或浮点型)

    海龟前进 distance 指定的距离,方向为海龟的朝向。

    >>> 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 -- 一个数值

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

    >>> turtle.position()
    (0.00,0.00)
    >>> turtle.backward(30)
    >>> turtle.position()
    (-30.00,0.00)
    

    turtle.right(angle)

    turtle.rt(angle)

    参数

    angle -- 一个数值 (整型或浮点型)

    海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()

    >>> turtle.heading()
    22.0
    >>> turtle.right(45)
    >>> turtle.heading()
    337.0
    

    turtle.left(angle)

    turtle.lt(angle)

    参数

    angle -- 一个数值 (整型或浮点型)

    海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()

    >>> turtle.heading()
    22.0
    >>> turtle.left(45)
    >>> turtle.heading()
    67.0
    

    turtle.goto(xy=None)

    turtle.setpos(xy=None)

    turtle.setposition(xy=None)

    参数

    • x -- 一个数值或数值对/向量

    • y -- 一个数值或 None

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

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

     >>> 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 -- 一个数值 (整型或浮点型)

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

    >>> turtle.position()
    (0.00,240.00)
    >>> turtle.setx(10)
    >>> turtle.position()
    (10.00,240.00)
    

    turtle.sety(y)

    参数

    y -- 一个数值 (整型或浮点型)

    设置海龟的纵坐标为 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 -- 一个数值 (整型或浮点型)

    设置海龟的朝向为 to_angle。以下是以角度表示的几个常用方向:

    标准模式

    logo 模式

    0 - 东

    0 - 北

    90 - 北

    90 - 东

    180 - 西

    180 - 南

    270 - 南

    270 - 西

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

    turtle.home()

    海龟移至初始坐标 (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(radiusextent=Nonesteps=None)

    参数

    • radius -- 一个数值

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

    • steps -- 一个整型数 (或 None)

    绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 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)

    参数

    • size -- 一个整型数 >= 1 (如果指定)

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

    绘制一个直径为 size,颜色为 color 的圆点。如果 size 未指定,则直径取 pensize+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()

    在海龟当前位置印制一个海龟形状。返回该印章的 stamp_id,印章可以通过调用 clearstamp(stamp_id) 来删除。

    >>> turtle.color("blue")
    >>> turtle.stamp()
    11
    >>> turtle.fd(50)
    

    turtle.clearstamp(stampid)

    参数

    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)

    参数

    n -- 一个整型数 (或 None)

    删除全部或前/后 n 个海龟印章。如果 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()

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

    >>> 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 范围内的整型数或速度字符串 (见下)

    设置海龟移动的速度为 0..10 表示的整型数值。如未指定参数则返回当前速度。

    如果输入数值大于 10 或小于 0.5 则速度设为 0。速度字符串与速度值的对应关系如下:

    • "fastest": 0 最快

    • "fast": 10 快

    • "normal": 6 正常

    • "slow": 3 慢

    • "slowest": 1 最慢

    速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。

    注意: speed = 0 表示 没有 动画效果。forward/back 将使海龟向前/向后跳跃,同样的 left/right 将使海龟立即改变朝向。

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

    获取海龟的状态

    turtle.position()

    turtle.pos()

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

    >>> turtle.pos()
    (440.00,-0.00)
    

    turtle.towards(xy=None)

    参数

    • x -- 一个数值或数值对/矢量,或一个海龟实例

    • y -- 一个数值——如果 x 是一个数值,否则为 None

    从海龟位置到由 (x,y),矢量或另一海龟对应位置的连线的夹角。此数值依赖于海龟初始朝向 - 由 "standard"/"world" 或 "logo" 模式设置所决定)。

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

    turtle.xcor()

    返回海龟的 x 坐标。

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

    turtle.ycor()

    返回海龟的 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()

    返回海龟当前的朝向 (数值依赖于海龟模式参见 mode())。

    >>> turtle.home()
    >>> turtle.left(67)
    >>> turtle.heading()
    67.0
    

    turtle.distance(xy=None)

    参数

    • x -- 一个数值或数值对/矢量,或一个海龟实例

    • y -- 一个数值——如果 x 是一个数值,否则为 None

    返回从海龟位置到由 (x,y),适量或另一海龟对应位置的单位距离。

    >>> 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 -- 一个正数值

    设置线条的粗细为 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)

    参数

    • pen -- 一个包含部分或全部下列键的字典

    • pendict -- 一个或多个以下列键为关键字的关键字参数

    返回或设置画笔的属性,以一个包含以下键值对的 "画笔字典" 表示:

    • "shown": True/False

    • "pendown": True/False

    • "pencolor": 颜色字符串或颜色元组

    • "fillcolor": 颜色字符串或颜色元组

    • "pensize": 正数值

    • "speed": 0..10 范围内的数值

    • "resizemode": "auto" 或 "user" 或 "noresize"

    • "stretchfactor": (正数值, 正数值)

    • "outline": 正数值

    • "tilt": 数值

    此字典可作为后续调用 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()

    返回以颜色描述字符串或元组 (见示例) 表示的当前画笔颜色。可用作其他 color/pencolor/fillcolor 调用的输入。

    pencolor(colorstring)

    设置画笔颜色为 colorstring 指定的 Tk 颜色描述字符串,例如 "red""yellow" 或 "#33cc8c"

    pencolor((r, g, b))

    设置画笔颜色为以 rgb 元组表示的 RGB 颜色。rgb 的取值范围应为 0..colormode,colormode 的值为 1.0 或 255 (参见 colormode())。

    pencolor(r, g, b)

    设置画笔颜色为以 rgb 表示的 RGB 颜色。rgb 的取值范围应为 0..colormode。

    如果 turtleshape 为多边形,该多边形轮廓也以新设置的画笔颜色绘制。

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

    返回以颜色描述字符串或元组 (见示例) 表示的当前填充颜色。可用作其他 color/pencolor/fillcolor 调用的输入。

    fillcolor(colorstring)

    设置填充颜色为 colorstring 指定的 Tk 颜色描述字符串,例如 "red""yellow" 或 "#33cc8c"

    fillcolor((r, g, b))

    设置填充颜色为以 rgb 元组表示的 RGB 颜色。rgb 的取值范围应为 0..colormode,colormode 的值为 1.0 或 255 (参见 colormode())。

    fillcolor(r, g, b)

    设置填充颜色为 rgb 表示的 RGB 颜色。rgb 的取值范围应为 0..colormode。

    如果 turtleshape 为多边形,该多边形内部也以新设置的填充颜色填充。

     >>> 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() 返回。

    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),使用其他输入格式的方法也与之类似。

    如果 turtleshape 为多边形,该多边形轮廓与填充也使用新设置的颜色。

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

    另参见: Screen 方法 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.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.write(argmove=Falsealign="left"font=("Arial"8"normal"))

    参数

    • arg -- 要书写到 TurtleScreen 的对象

    • move -- True/False

    • align -- 字符串 "left", "center" 或 "right"

    • font -- 一个三元组 (fontname, fontsize, fonttype)

    书写文本 - arg 指定的字符串 - 到当前海龟位置,align 指定对齐方式 ("left", "center" 或 right"),font 指定字体。如果 move 为 True,画笔会移动到文本的右下角。默认 move 为 False

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

    海龟状态

    可见性

    turtle.hideturtle()

    turtle.ht()

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

    >>> turtle.hideturtle()
    

    turtle.showturtle()

    turtle.st()

    使海龟可见。

    >>> turtle.showturtle()
    

    turtle.isvisible()

    如果海龟显示返回 True,如果海龟隐藏返回 False

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

    外观

    turtle.shape(name=None)

    参数

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

    设置海龟形状为 name 指定的形状名,如未指定形状名则返回当前的形状名。name 指定的形状名应存在于 TurtleScreen 的 shape 字典中。多边形的形状初始时有以下几种: "arrow", "turtle", "circle", "square", "triangle", "classic"。要了解如何处理形状请参看 Screen 方法 register_shape()

    >>> turtle.shape()
    'classic'
    >>> turtle.shape("turtle")
    >>> turtle.shape()
    'turtle'
    

    turtle.resizemode(rmode=None)

    参数

    rmode -- 字符串 "auto", "user", "noresize" 其中之一

    设置大小调整模式为以下值之一: "auto", "user", "noresize"。如未指定 rmode 则返回当前的大小调整模式。不同的大小调整模式的效果如下:

    • "auto": 根据画笔粗细值调整海龟的外观。

    • "user": 根据拉伸因子和轮廓宽度 (outline) 值调整海龟的外观,两者是由 shapesize() 设置的。

    • "noresize": 不调整海龟的外观大小。

    大小调整模式 ("user") 会在 shapesize() 带参数调用时生效。

    >>> turtle.resizemode()
    'noresize'
    >>> turtle.resizemode("auto")
    >>> turtle.resizemode()
    'auto'
    

    turtle.shapesize(stretch_wid=Nonestretch_len=Noneoutline=None)

    turtle.turtlesize(stretch_wid=Nonestretch_len=Noneoutline=None)

    参数

    • stretch_wid -- 正数值

    • stretch_len -- 正数值

    • outline -- 正数值

    返回或设置画笔的属性 x/y-拉伸因子和/或轮廓。设置大小调整模式为 "user"。当且仅当大小调整模式设为 "user" 时海龟会基于其拉伸因子调整外观: 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 -- 数值 (可选)

    设置或返回当前的剪切因子。根据 share 指定的剪切因子即剪切角度的切线来剪切海龟形状。 改变海龟的朝向 (移动方向)。如未指定 shear 参数: 返回当前的剪切因子即剪切角度的切线,与海龟朝向平行的线条将被剪切。

     >>> turtle.shape("circle")
     >>> turtle.shapesize(5,2)
     >>> turtle.shearfactor(0.5)
     >>> turtle.shearfactor()
     0.5
    

    turtle.tilt(angle)

    参数

    angle -- 一个数值

    海龟形状自其当前的倾角转动 angle 指定的角度,但  改变海龟的朝向 (移动方向)。

    >>> 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 -- 一个数值

    旋转海龟形状使其指向 angle 指定的方向,忽略其当前的倾角, 改变海龟的朝向 (移动方向)。

    >>> 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 -- 一个数值 (可选)

    设置或返回当前的倾角。如果指定 angle 则旋转海龟形状使其指向 angle 指定的方向,忽略其当前的倾角。 改变海龟的朝向 (移动方向)。如果未指定 angle: 返回当前的倾角,即海龟形状的方向和海龟朝向 (移动方向) 之间的夹角。

    >>> turtle.reset()
    >>> turtle.shape("circle")
    >>> turtle.shapesize(5,2)
    >>> turtle.tilt(45)
    >>> turtle.tiltangle()
    45.0
    

    turtle.shapetransform(t11=Nonet12=Nonet21=Nonet22=None)

    参数

    • t11 -- 一个数值 (可选)

    • t12 -- 一个数值 (可选)

    • t21 -- 一个数值 (可选)

    • t12 -- 一个数值 (可选)

    设置或返回海龟形状的当前变形矩阵。

    如不指定任何矩阵元素,则返回以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(funbtn=1add=None)

    参数

    • fun -- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

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

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

    将 fun 指定的函数绑定到鼠标点击此海龟事件。如果 fun 值为 None,则移除现有的绑定。以下为使用匿名海龟即过程式的示例:

    >>> 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(funbtn=1add=None)

    参数

    • fun -- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

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

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

    将 fun 指定的函数绑定到在此海龟上释放鼠标按键事件。如果 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(funbtn=1add=None)

    参数

    • fun -- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

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

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

    将 fun 指定的函数绑定到在此海龟上移动鼠标事件。如果 fun 值为 None,则移除现有的绑定。

    注: 在海龟上移动鼠标事件之前应先发生在此海龟上点击鼠标事件。

    >>> turtle.ondrag(turtle.goto)
    

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

    特殊海龟方法

    turtle.begin_poly()

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

    turtle.end_poly()

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

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

    创建并返回海龟的克隆体,具有相同的位置、朝向和海龟属性。

    >>> mick = Turtle()
    >>> joe = mick.clone()
    

    turtle.getturtle()

    turtle.getpen()

    返回海龟对象自身。唯一合理的用法: 作为一个函数来返回 "匿名海龟":

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

    turtle.getscreen()

    返回作为海龟绘图场所的 TurtleScreen 类对象。该对象将可调用 TurtleScreen 方法。

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

    turtle.setundobuffer(size)

    参数

    size -- 一个整型数值或 None

    设置或禁用撤消缓冲区。如果 size 为一个整型数则将开辟一个指定大小的空缓冲区。size 表示可使用 undo() 方法/函数撤消的海龟命令的次数上限。如果 size 为 None 则禁用撤消缓冲区。

    >>> turtle.setundobuffer(42)
    

    turtle.undobufferentries()

    返回撤销缓冲区里的条目数。

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

    复合形状

    要使用由多个不同颜色多边形构成的复合海龟形状,你必须明确地使用辅助类 Shape,具体步骤如下:

    1. 创建一个空 Shape 对象,类型为 "compound"。

    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. 接下来将 Shape 对象添加到 Screen 对象的形状列表并使用它:

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

    注解

     

    Shape 类在 register_shape() 方法的内部以多种方式使用。应用程序编写者 只有 在使用上述的复合形状时才需要处理 Shape 类。

    TurtleScreen/Screen 方法及对应函数

    本节中的大部分示例都使用 TurtleScreen 类的一个实例,命名为 screen

    窗口控制

    turtle.bgcolor(*args)

    参数

    args -- 一个颜色字符串或三个取值范围 0..colormode 内的数值或一个取值范围相同的数值3元组

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

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

    设置背景图片或返回当前背景图片名称。如果 picname 为一个文件名,则将相应图片设为背景。如果 picname 为 "nopic",则删除当前背景图片。如果 picname 为 None,则返回当前背景图片文件名。:

    >>>

    >>> screen.bgpic()
    'nopic'
    >>> screen.bgpic("landscape.gif")
    >>> screen.bgpic()
    "landscape.gif"
    

    turtle.clear()

    turtle.clearscreen()

    从中删除所有海龟的全部绘图。将已清空的 TurtleScreen 重置为初始状态: 白色背景,无背景片,无事件绑定并启用追踪。

    注解

     

    此 TurtleScreen 方法作为全局函数时只有一个名字 clearscreen。全局函数 clear 所对应的是 Turtle 方法 clear

    turtle.reset()

    turtle.resetscreen()

    重置屏幕上的所有海龟为其初始状态。

    注解

     

    此 TurtleScreen 方法作为全局函数时只有一个名字 resetscreen。全局函数 reset 所对应的是 Turtle 方法 reset

    turtle.screensize(canvwidth=Nonecanvheight=Nonebg=None)

    参数

    • canvwidth -- 正整型数,以像素表示画布的新宽度值

    • canvheight -- 正整型数,以像素表示画面的新高度值

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

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

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

    也可以用来寻找意外逃走的海龟 ;-)

    turtle.setworldcoordinates(llxllyurxury)

    参数

    • llx -- 一个数值, 画布左下角的 x-坐标

    • lly -- 一个数值, 画布左下角的 y-坐标

    • urx -- 一个数值, 画面右上角的 x-坐标

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

    设置用户自定义坐标系并在必要时切换模式为 "world"。这会执行一次 screen.reset()。如果 "world" 模式已激活,则所有图形将根据新的坐标系重绘。

    注意: 在用户自定义坐标系中,角度可能显得扭曲。

    >>> 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 -- 正整型数

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

    可选参数:

    >>> screen.delay()
    10
    >>> screen.delay(5)
    >>> screen.delay()
    5
    

    turtle.tracer(n=Nonedelay=None)

    参数

    • n -- 非负整型数

    • delay -- 非负整型数

    启用/禁用海龟动画并设置刷新图形的延迟时间。如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。(可被用来加速复杂图形的绘制。) 如果调用时不带参数,则返回当前保存的 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()

    使用屏幕事件

    turtle.listen(xdummy=Noneydummy=None)

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

    turtle.onkey(funkey)

    turtle.onkeyrelease(funkey)

    参数

    • fun -- 一个无参数的函数或 None

    • key -- 一个字符串: 键 (例如 "a") 或键标 (例如 "space")

    绑定 fun 指定的函数到按键释放事件。如果 fun 值为 None,则移除事件绑定。注: 为了能够注册按键事件,TurtleScreen 必须得到焦点。(参见 method listen() 方法。)

    >>> def f():
    ...     fd(50)
    ...     lt(60)
    ...
    >>> screen.onkey(f, "Up")
    >>> screen.listen()
    

    turtle.onkeypress(funkey=None)

    参数

    • fun -- 一个无参数的函数或 None

    • key -- 一个字符串: 键 (例如 "a") 或键标 (例如 "space")

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

    >>> def f():
    ...     fd(50)
    ...
    >>> screen.onkey(f, "Up")
    >>> screen.listen()
    

    turtle.onclick(funbtn=1add=None)

    turtle.onscreenclick(funbtn=1add=None)

    参数

    • fun -- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。

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

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

    绑定 fun 指定的函数到鼠标点击屏幕事件。如果 fun 值为 None,则移除现有的绑定。

    以下示例使用一个 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(funt=0)

    参数

    • 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
    

    turtle.mainloop()

    turtle.done()

    开始事件循环 - 调用 Tkinter 的 mainloop 函数。必须作为一个海龟绘图程序的结束语句。如果一个脚本是在以 -n 模式 (无子进程) 启动的 IDLE 中运行时 不可 使用 - 用于实现海龟绘图的交互功能。:

    >>>

    >>> screen.mainloop()
    

    输入方法

    turtle.textinput(titleprompt)

    参数

    • title -- 字符串

    • prompt -- 字符串

    弹出一个对话框窗口用来输入一个字符串。形参 title 为对话框窗口的标题,prompt 为一条文本,通常用来提示要输入什么信息。返回输入的字符串。如果对话框被取消则返回 None。:

    >>>

    >>> screen.textinput("NIM", "Name of first player:")
    

    turtle.numinput(titlepromptdefault=Noneminval=Nonemaxval=None)

    参数

    • title -- 字符串

    • prompt -- 字符串

    • default -- 数值 (可选)

    • minval -- 数值 (可选)

    • maxval -- 数值 (可选)

    弹出一个对话框窗口用来输入一个数值。title 为对话框窗口的标题,prompt 为一条文本,通常用来描述要输入的数值信息。default: 默认值, minval: 可输入的最小值, maxval: 可输入的最大值。输入数值的必须在指定的 minval .. maxval 范围之内,否则将给出一条提示,对话框保持打开等待修改。返回输入的数值。如果对话框被取消则返回 None。:

    >>>

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

    设置与特殊方法

    turtle.mode(mode=None)

    参数

    mode -- 字符串 "standard", "logo" 或 "world" 其中之一

    设置海龟模式 ("standard", "logo" 或 "world") 并执行重置。如未指定模式则返回当前的模式。

    "standard" 模式与旧的 turtle 兼容。"logo" 模式与大部分 Logo 海龟绘图兼容。"world" 模式使用用户自定义的 "世界坐标系"。注意: 在此模式下,如果 x/y 单位比率不等于 1 则角度会显得扭曲。

    模式

    初始海龟朝向

    正数角度

    "standard"

    朝右 (东)

    逆时针

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

    返回此 TurtleScreen 的 Canvas 对象。供了解 Tkinter 的 Canvas 对象内部机理的人士使用。

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

    turtle.getshapes()

    返回所有当前可用海龟形状的列表。

    >>> screen.getshapes()
    ['arrow', 'blank', 'circle', ..., 'turtle']
    

    turtle.register_shape(nameshape=None)

    turtle.addshape(nameshape=None)

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

    1. name 为一个 gif 文件的文件名, shape 为 None: 安装相应的图像形状。:

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

      注解

       

      当海龟转向时图像形状 不会 转动,因此无法显示海龟的朝向!

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

      >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
      
    3. name 为指定的字符串, 为一个 (复合) Shape 类对象: 安装相应的复合形状。

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

    turtle.turtles()

    返回屏幕上的海龟列表。

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

    turtle.window_height()

    返回海龟窗口的高度。:

    >>>

    >>> screen.window_height()
    480
    

    turtle.window_width()

    返回海龟窗口的宽度。:

    >>>

    >>> screen.window_width()
    640
    

    Screen 专有方法, 而非继承自 TurtleScreen

    turtle.bye()

    关闭海龟绘图窗口。

    turtle.exitonclick()

    将 bye() 方法绑定到 Screen 上的鼠标点击事件。

    如果配置字典中 "using_IDLE" 的值为 False (默认值) 则同时进入主事件循环。注: 如果启动 IDLE 时使用了 -n 开关 (无子进程),turtle.cfg 中此数值应设为 True。在此情况下 IDLE 本身的主事件循环同样会作用于客户脚本。

    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 -- 一个字符串,显示为海龟绘图窗口的标题栏文本

    设置海龟窗口标题为 titlestring 指定的文本。

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

    公共类

    class turtle.RawTurtle(canvas)

    class turtle.RawPen(canvas)

    参数

    canvas -- 一个 tkinter.Canvas , ScrolledCanvas 或 TurtleScreen 类对象

    创建一个海龟。海龟对象具有 "Turtle/RawTurtle 方法" 一节所述的全部方法。

    class turtle.Turtle

    RawTurtle 的子类,具有相同的接口,但其绘图场所为默认的 Screen 类对象,在首次使用时自动创建。

    class turtle.TurtleScreen(cv)

    参数

    cv -- 一个 tkinter.Canvas 类对象

    提供面向屏幕的方法例如 setbg() 等。说明见上文。

    class turtle.Screen

    TurtleScreen 的子类,增加了四个方法.

    class turtle.ScrolledCanvas(master)

    参数

    master -- 可容纳 ScrolledCanvas 的 Tkinter 部件,即添加了滚动条的 Tkinter-canvas

    由 Screen 类使用,使其能够自动提供一个 ScrolledCanvas 作为海龟的绘图场所。

    class turtle.Shape(type_data)

    参数

    type_ -- 字符串 "polygon", "image", "compound" 其中之一

    实现形状的数据结构。(type_, data) 必须遵循以下定义:

    type_

    data

    "polygon"

    一个多边形元组,即由坐标值对构成的元组

    "image"

    一个图片 (此形式仅限内部使用!)

    "compound"

    None (复合形状必须使用 addcomponent() 方法来构建)

    addcomponent(polyfilloutline=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(xy)

    一个二维矢量类,用来作为实现海龟绘图的辅助类。也可能在海龟绘图程序中使用。派生自元组,因此矢量也属于元组!

    提供的运算 (ab 为矢量, k 为数值):

    • a + b 矢量加法

    • a - b 矢量减法

    • a * b 内积

    • k * a 和 a * k 与标量相乘

    • abs(a) a 的绝对值

    • a.rotate(angle) 旋转

    帮助与配置

    如何使用帮助

    Screen 和 Turtle 类的公用方法以文档字符串提供了详细的文档。因此可以利用 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()
      

    这些修改版文档字符串是在导入时与方法对应函数的定义一起自动生成的。

    文档字符串翻译为不同的语言

    可使用工具创建一个字典,键为方法名,值为 Screen 和 Turtle 类公共方法的文档字符串。

    turtle.write_docstringdict(filename="turtle_docstringdict")

    参数

    filename -- 一个字符串,表示文件名

    创建文档字符串字典并将其写入 filename 指定的 Python 脚本文件。此函数必须显示地调用 (海龟绘图类并不使用此函数)。文档字符串字典将被写入到 Python 脚本文件 filename.py。该文件可作为模板用来将文档字符串翻译为不同语言。

    如果你 (或你的学生) 想使用本国语言版本的 turtle 在线帮助,你必须翻译文档字符串并保存结果文件,例如 turtle_docstringdict_german.py.

    如果你在 turtle.cfg 文件中加入了相应的条目,此字典将在导入模块时被读取并替代原有的英文版文档字符串。

    在撰写本文档时已经有了德语和意大利语版的文档字符串字典。(更多需求请联系 glingl@aon.at)

    如何配置 Screen 和 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() 方法的参数。

    • shape 可以是任何内置形状,即: arrow, turtle 等。更多信息可用 help(shape) 查看。

    • 如果你想使用无填充色 (即令海龟变透明),你必须写 fillcolor = "" (但 cfg 文件中所有非空字符串都不可加引号)。

    • 如果你想令海龟反映其状态,你必须使用 resizemode = auto

    • 如果你设置语言例如 language = italian 则文档字符串字典 turtle_docstringdict_italian.py 将在导入模块时被加载 (如果导入路径即 turtle 的目录中存在此文件。

    • exampleturtle 和 examplescreen 条目定义了相应对象在文档字符串中显示的名称。方法文档字符串转换为函数文档字符串时将从文档字符串中删去这些名称。

    • using_IDLE: 如果你经常使用 IDLE 并启用其 -n 开关 ("无子进程") 则应将此项设为 True,这将阻止 exitonclick() 进入主事件循环。

    turtle.cfg 文件可以保存于 turtle 所在目录,当前工作目录也可以有一个同名文件。后者会重载覆盖前者的设置。

    Lib/turtledemo 目录中也有一个 turtle.cfg 文件。你可以将其作为示例进行研究,并在运行演示时查看其作用效果 (但最好不要在演示查看器中运行)。

    turtledemo --- 演示脚本集

    turtledemo 包汇集了一组演示脚本。这些脚本可以通过以下命令打开所提供的演示查看器运行和查看:

    python -m turtledemo
    

    此外,你也可以单独运行其中的演示脚本。例如,:

    python -m turtledemo.bytedesign
    

    turtledemo 包目录中的内容:

    • 一个演示查看器 __main__.py,可用来查看脚本的源码并即时运行。

    • 多个脚本文件,演示 turtle 模块的不同特性。所有示例可通过 Examples 菜单打开。也可以单独运行每个脚本。

    • 一个 turtle.cfg 文件,作为说明如何编写并使用模块配置文件的示例模板。

    演示脚本清单如下:

    名称

    描述

    相关特性

    bytedesign

    复杂的传统海龟绘图模式

    tracer(), delay, update()

    chaos

    绘制 Verhulst 动态模型,演示通过计算机的运算可能会生成令人惊叹的结果

    世界坐标系

    clock

    绘制模拟时钟显示本机的当前时间

    海龟作为表针, ontimer

    colormixer

    试验 r, g, b 颜色模式

    ondrag() 当鼠标拖动

    forest

    绘制 3 棵广度优先树

    随机化

    fractalcurves

    绘制 Hilbert & Koch 曲线

    递归

    lindenmayer

    文化数学 (印度装饰艺术)

    L-系统

    minimal_hanoi

    汉诺塔

    矩形海龟作为汉诺盘 (shape, shapesize)

    nim

    玩经典的“尼姆”游戏,开始时有三堆小棒,与电脑对战。

    海龟作为小棒,事件驱动 (鼠标, 键盘)

    paint

    超极简主义绘画程序

    onclick() 当鼠标点击

    peace

    初级技巧

    海龟: 外观与动画

    penrose

    非周期性地使用风筝和飞镖形状铺满平面

    stamp() 印章

    planet_and_moon

    模拟引力系统

    复合开关, Vec2D 类

    round_dance

    两两相对并不断旋转舞蹈的海龟

    复合形状, clone shapesize, tilt, get_shapepoly, update

    sorting_animate

    动态演示不同的排序方法

    简单对齐, 随机化

    tree

    一棵 (图形化的) 广度优先树 (使用生成器)

    clone() 克隆

    two_canvases

    简单设计

    两块画布上的海龟

    wikipedia

    一个来自介绍海龟绘图的维基百科文章的图案

    clone()undo()

    yinyang

    另一个初级示例

    circle() 画圆

    祝你玩得开心!

    Python 2.6 之后的变化

    • Turtle.tracer()Turtle.window_width() 和 Turtle.window_height() 方法已被去除。具有这些名称和功能的方法现在只限于 Screen 类的方法。但其对应的函数仍然可用。(实际上在 Python 2.6 中这些方法就已经只是从对应的 TurtleScreen/Screen 类的方法复制而来。)

    • Turtle.fill() 方法已被去除。begin_fill() 和 end_fill() 的行为则有细微改变: 现在每个填充过程必须以一个 end_fill() 调用来结束。

    • 新增了一个 Turtle.filling() 方法。该方法返回一个布尔值: 如果填充过程正在进行为 True,否则为 False。此行为相当于 Python 2.6 中不带参数的 fill() 调用。

    Python 3.0 之后的变化

    • 新增了 Turtle.shearfactor()Turtle.shapetransform() 和 Turtle.get_shapepoly() 方法。这样就可以使用所有标准线性变换来调整海龟形状。Turtle.tiltangle() 的功能已被加强: 现在可被用来获取或设置倾角。Turtle.settiltangle() 已弃用。

    • 新增了 Screen.onkeypress() 方法作为对 Screen.onkey() 的补充,实际就是将行为绑定到 keyrelease 事件。后者相应增加了一个别名: Screen.onkeyrelease()

    • 新增了 Screen.mainloop() 方法。这样当仅需使用 Screen 和 Turtle 对象时不需要再额外导入 mainloop()

    • 新增了两个方法 Screen.textinput() 和 Screen.numinput()。用来弹出对话框接受输入并分别返回字符串和数值。

    • 两个新的示例脚本 tdemo_nim.py 和 tdemo_round_dance.py 被加入到 Lib/turtledemo 目录中。

    展开全文
    sin1277839683 2019-12-07 10:49:45
  • turtle.st() turtle.forward(145) turtle.left(90) turtle.forward(10) turtle.pendown() turtle.forward(110) turtle.left(90) turtle.forward(287) turtle.left(90) turtle.forward(110) turtle.left(90) turtle....

    1586010002-jmsa.png

    I want to make the word "CAT" into a button, so when it's clicked it says "CAT". Also, the button I want should be in the position that the word is right now when it's not a button. Any help provided is needed. Thank you

    I have already tried the tkinter module, but the problem with that is it opens a separate window with the button. What I want is a button on the main screen.

    import turtle

    screen = turtle.Screen()

    # this assures that the size of the screen will always be 400x400 ...

    screen.setup(800,800)

    turtle.ht()

    turtle.penup()

    turtle.goto (50, 200)

    turtle.color("black")

    turtle.write("CAT", move=False, align="center", font=("Times New Roman", 120, "bold"))

    screen.bgpic("background.gif")

    turtle.st()

    turtle.forward(145)

    turtle.left(90)

    turtle.forward(10)

    turtle.pendown()

    turtle.forward(110)

    turtle.left(90)

    turtle.forward(287)

    turtle.left(90)

    turtle.forward(110)

    turtle.left(90)

    turtle.forward(287)

    turtle.ht()

    I expect the output to be a huge button (in black) at the top of the screen saying "CAT". When that button is pressed, I want it to say "CAT" out loud. Right now there is just text at the top saying "CAT". I want to replace that text with a button saying the same thing. If I use on screen click I want the click to be in specific coordinates. How would I do that.

    Thank You!

    解决方案

    You could use turtle do draw rectangle which could look like button. And you can useonscreenclick(check_button)to run functioncheck_button` when you click screen. If you clicked in rectangle then it could run function which does something.

    import turtle

    def show_cat():

    turtle.ht()

    turtle.penup()

    turtle.goto (15, 220)

    turtle.color("black")

    turtle.write("CAT", move=False, align="center", font=("Times New Roman", 120, "bold"))

    def check_button(x, y):

    if -300 < x < 300 and 200 < y < 400:

    show_cat()

    screen = turtle.Screen()

    screen.setup(800,800)

    turtle.penup()

    turtle.goto(-300, 200)

    turtle.pendown()

    turtle.begin_fill()

    turtle.fillcolor('red')

    turtle.fd(600)

    turtle.left(90)

    turtle.fd(300)

    turtle.left(90)

    turtle.fd(600)

    turtle.left(90)

    turtle.fd(300)

    turtle.left(90)

    turtle.end_fill()

    turtle.onscreenclick(check_button)

    turtle.mainloop()

    Or you can use tk.Button with canvas.master as its parent, and put it on canvas using create_window(x, y, window=widget)

    import turtle

    import tkinter as tk

    def show_cat():

    turtle.ht()

    turtle.penup()

    turtle.goto (15, 220)

    turtle.color("black")

    turtle.write("CAT", move=False, align="center", font=("Times New Roman", 120, "bold"))

    screen = turtle.Screen()

    screen.setup(800,800)

    canvas = screen.getcanvas()

    button = tk.Button(canvas.master, text="Click Me", command=show_cat)

    canvas.create_window(0, 0, window=button)

    #canvas.create_rectangle((100, 100, 700, 300))

    turtle.mainloop()

    The same way you can put other tkinter's widgets on canvas

    EDIT: example with more widgets

    import turtle

    import tkinter as tk

    def show_cat():

    label = tk.Label(canvas.master, text="Cat", font=("Times New Roman", 120, "bold"))

    canvas.create_window(0, -300, window=label)

    canvas.create_text(0, 300, text="HELLO", fill="red", font=("Times New Roman", 120, "bold"))

    #-------------------------------------------

    screen = turtle.Screen()

    screen.setup(800,800)

    canvas = screen.getcanvas()

    button = tk.Button(canvas.master, text="Click Me", command=show_cat)

    canvas.create_window(0, 0, window=button)

    turtle.mainloop()

    展开全文
    weixin_39896839 2020-11-23 12:46:03
  • 152KB weixin_38743481 2019-10-23 05:08:39
  • 5星
    152KB hongluelv 2019-02-20 11:41:48
  • 769B honely828 2020-11-25 11:41:34
  • sandalphon4869 2019-08-15 13:10:48
  • weixin_39628945 2020-11-20 20:46:33
  • chenxz_76 2020-12-22 09:43:40
  • weixin_39877805 2020-11-20 17:43:09
  • A757291228 2020-05-23 21:48:25
  • weixin_39542710 2020-11-23 12:46:02
  • weixin_29816241 2021-04-27 01:19:00
  • 83KB weixin_38586279 2021-01-21 17:32:01
  • weixin_39667626 2020-12-05 01:08:42
  • weixin_39551996 2020-11-28 07:02:58
  • weixin_39620197 2021-02-05 19:27:40
  • 67.74MB wbwchina 2018-02-16 19:56:25
  • weixin_39952502 2020-11-20 17:43:10
  • weixin_33216916 2021-01-14 00:11:03
  • weixin_39976575 2020-11-23 22:37:24
  • weixin_39631953 2020-12-09 23:10:37
  • zycxnanwang 2018-11-21 23:18:26
  • wangpeimingchenzhe 2019-07-05 14:55:14
  • weixin_39627455 2020-11-30 03:49:17
  • weixin_42309456 2021-02-10 07:45:17
  • weixin_39713841 2020-11-20 17:43:09

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,109
精华内容 1,643
关键字:

turtle中文