精华内容
下载资源
问答
  • 在了解 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()
    

    运行结果:

    在这里插入图片描述

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

    展开全文
  • 前言本文参考:Python库...如有错误欢迎指出,之后会出关于turtle的实现的博文,欢迎关注!由于网上其它文档的形式不符合我个人习惯,在查阅资料时总感觉不是很习惯,就想着顺手写一篇博文作为一个参考示例。在了...

    前言

    本文参考: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的详情。

    基本编程说明

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

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

    TurtleScreen类将会绘制出一个2D平面,turtle 相当于绘画笔。。

    它的构造函数需要一个Tkinter.Canvas或一个ScrolledCanvas作为参数。 当应用程序使用turtle时应该使用它。

    Screen()函数返回一个TurtleScreen子类的单例。 当turtle被用作单独的绘制工具使,就应该使用这个函数。

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

    运行结果:

    欢迎点赞、收藏、关注;

    如有错误可在评论区指出,谢谢!

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 312
精华内容 124
关键字:

turtle中文