python图形绘制库turtle中文开发文档及示例大全【最详细、连结果图都有,gif格式的!】

前言

本文参考: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 timefor 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 timefd(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 timespeed('fastest')#或者使用0
circle(100)
input()

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

笔控制

绘制状态

penup() | pu() | up()

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

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

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

pendown() | pd() | down()

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

from turtle import *
import timepenup()
circle(100)
pendown()
circle(100)
input()

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

pensize() | width()

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

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

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

from turtle import *
import timepensize(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 timepen(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 timepen(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 timepencolor("brown")
circle(100)
input()

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

from turtle import *
import timetup = (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 timecolor("red", "blue")
circle(100)
input()

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

begin_fill()/end_fill()

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

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

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

更多绘制控制

reset()

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

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

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

clear()

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

from turtle import *
import timefd(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 timefd(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 timehideturtle()
input()

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

showturtle()

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

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

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

turtle.isvisible()

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

from turtle import *
import timehideturtle()
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 timeshape("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 timeshapesize(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 timetilt(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 timedef 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 timedef 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 timeondrag(goto)
input()

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

一些特别的Turtle方法

clone()

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

from turtle import *
import timemick = 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 timepet = getturtle()
pet.fd(50)
input()

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

setundobuffer()

turtle.setundobuffer(size)
参数:

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

代码示例:

from turtle import *
import timesetundobuffer(42)
input()

undobufferentries()

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

from turtle import *
import timefd(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 timegoto(100,0)
time.sleep(2)
resetscreen()
input()

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

screensize()

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

from turtle import *
import timescreensize(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()

运行结果:

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 事务_从Oracle到PG-PostgreSQL的MVCC机制简介

作者&#xff1a;甘植恳-AkenPostgreSQL和Oracle、MySQL等RDBMS一样&#xff0c;都有自己的并发控制机制。而并发控制的目的是为了在多个事务同时运行时保持事务ACID属性。MVCC即Multi-version concurrence control首字母缩写&#xff0c;MVCC会为每个数据更改操作创建数据块或…

【Microstation】不能从对话框中装载/创建类型为 ‘HTML‘,id =41510001 的对话框条目,该对话框为: “文本编辑器 - 字处理器“,GCSDIALOG 已装载。

在Win7上安装MicroStation V8i简体中文版,在添加文字图层的时候,点击出现提示“不能从对话框中装载/创建类型为 HTML,id =41510001 的对话框条目,该对话框为: "文本编辑器 - 字处理器",GCSDIALOG 已装载。”,问题出在Win7对该软件的兼容性上。 MS软件提供了三种…

fastdfs 一个group内实现按照不同的项目,指定路径存储.

为什么80%的码农都做不了架构师&#xff1f;>>> 环境介绍: 1: 公司目前有5个项目 A B C D E 日后可能会有所增加. 2: 使用fastdfs存储这5各项目的文件,要求各各项目的文件分开存储,也就是每个项目的文件存储到一个固定的位置. 3: 三台机器ip地址分配如下 tracker…

一个WPF开发的打印对话框-PrintDialogX

今天五月一号&#xff0c;大家玩的开心哦。1. 介绍今天介绍一个WPF开发的打印对话框开源项目-PrintDialogX[1]&#xff0c;该开源项目由《WPF开源项目&#xff1a;AIStudio.Wpf.AClient》[2]作者推荐。欢迎使用 PrintDialogX, 这是一个开源项目。免费用于商业用途。用于 C# 的自…

这一新的可视化方法教你优雅地探索相关性

一个古老的诅咒一直萦绕着数据分析&#xff1a;我们用来改进模型的变量越多&#xff0c;那么我们需要的数据就会出现指数级的增长。不过&#xff0c;我们通过关注重要的变量就可以避免欠拟合以及降低收集大量数据的需求。减少输入变量的一种方法是鉴别其对输出变量的影响。变量…

【新手宝典】一篇博文带萌新建站并了解建站体系流程和对萌新友好的便捷方式,这篇博文很有可能是你的启蒙文

前言 本片博文主要面向于还没接触过web开发的萌新&#xff0c;以及想知道整体流程并且完成建站的萌新&#xff1b;如果你是个大佬&#xff0c;就没必要看下去了。 本篇博文没有难啃的骨头&#xff0c;请各位萌新放心食用。 本篇博文采用通俗易懂的方式讲解&#xff0c;轻松并…

MicroStation V8i简体中文版中文字体乱码解决办法

Bentley (奔特力)是一家软件研发公司,其核心业务是满足负责建造和管理全球基础设施,包括公路、桥梁、机场、摩天大楼、工业厂房和电厂以及公用事业网络等领域专业人士的需求。Bentley 在基础设施资产的整个生命周期内针对不同的职业,包括工程师、建筑师、规划师、承包商、…

惠普ProDesk行业专用台式机U盘不识别解决办法

惠普ProDesk行业专用台式机在使用的过程当中&#xff0c;老出现插入U盘不识别的问题&#xff0c;总是需要在重启的过程中插入U盘才能使用U盘&#xff0c;解决办法是&#xff1a;&#xff08;1&#xff09;打开设备管理器&#xff0c;如下图所示&#xff1a;&#xff08;2&#…

【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解

本篇作为Windows API 系列文章的第一篇&#xff0c;将简要的讲解一下什么是Windows API&#xff0c;Windows API能做些什么&#xff0c;并且尽可能讲解一些新出现的专有名词&#xff1b;本系列博文几乎没有难啃的“专业术语”&#xff0c;尽量让读者能够看明白文章所述内容&…

中国人工智能学会通讯——基于视频的行为识别技术 1.1 什么是行为

今天跟大家分享的主题是基于视频的 行为识别领域研究&#xff0c;主要介绍一下早期 的非深度学习传统方法和近期深度学习 方法取得的结果。深度学习方法带来了 非常大的变革&#xff0c;提升了识别系统的性能&#xff0c; 但这并不意味着我们把传统的东西都要 抛弃&#xff0c;…

Windows 11 22H2 22610 重磅发布!删除水印,多彩任务管理器,文件资源管理器深度优化...

面向 Dev 和 Beta 频道的 Windows 预览体验成员&#xff0c;微软现已发布 Windows 11 22H2 预览版 Build 22610。主要变化1.微软现已更新 Windows 11 任务管理器的进程页面&#xff0c;将随着 Windows 主题颜色而变化。2.微软现已更新锁屏上的电池图标&#xff0c;适配 Windows…

一篇文教你使用python Turtle库画出“精美碎花小清新风格树”快来拿代码!

Turtle库手册可以查询查询 python图形绘制库turtle中文开发文档及示例大全&#xff0c;手册中现有示例&#xff0c;不需要自己动手就可以查看演示。 文章修改记录 修改记录 1&#xff1a;2020年5月17日 12:06:51 由于某些童鞋回复说自己会卡死&#xff0c;请把代码&#xff…

阿里云500服务器内部错误,腾讯云服务器网站不能打开 提示内部错误http 500

满意答案2010qqww2015.11.14采纳率&#xff1a;55% 等级&#xff1a;9已帮助&#xff1a;13114人实服务器内部500错误大概可分为两种&#xff0c;一种是服务器本身权限问题&#xff0c;另一种是程序上不规范或者错误造成。所以要解决此问题需要先弄清楚其到底是哪种原因&…

Hadoop(四)C#操作Hbase

HbaseHbase是一种NoSql模式的数据库&#xff0c;采用了列式存储。而采用了列存储天然具备以下优势&#xff1a;可只查涉及的列&#xff0c;且列可作为索引&#xff0c;相对高效针对某一列的聚合及其方便同一列的数据类型一致&#xff0c;方便压缩同时由于列式存储将不同列分开存…

【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”

本系列博文几乎没有难啃的“专业术语”&#xff0c;尽量让读者能够看明白文章所述内容&#xff0c;是本系列博文的核心宗旨之一。&#xff08;由于本人也是由于项目需要&#xff0c;所以才来查阅相关资料&#xff0c;文中出现的错误欢迎指出&#xff0c;共同进步&#xff01;谢…

一行命令 优化上传速度

本文来自 fir.im 首席吉祥物 TraWor. 最近许多用户反映上传速度慢的一塌糊涂&#xff0c;七牛的上传带宽我想肯定是没问题的&#xff0c;那原因不必多想就剩下 DNS 了。 即便本地网络再快&#xff0c;DNS 服务器给了一个很远的服务器地址也没办法很快的上传。 在终端运行这一行…

go 服务器 源码,LollipopGo开源游戏服务器框架--global服务器源码

大家好&#xff0c;我是彬哥&#xff0c;本节给大家讲下LollipopGov1.0.20190102版本游戏服务器globla服务器&#xff0c;抛砖引玉了&#xff0c;主要是针对Go语言游戏服务器Global服务器处理。package mainimport ("LollipopGo/LollipopGo/conf""LollipopGo/Lo…

ArcGIS导入Sketchup模型

ArcGIS可以与Sketchup、3D Studio Max等三维软件完美进行交互。 ArcGIS可以借助 Import 3D Files 工具支持主流的三维模型导入。支持 3D Studio Max (*.3ds)、VRML and GeoVRML 2.0 (*.wrl)、SketchUp 6.0 (*.skp)、OpenFlight 15.8 (*.flt)、Collaborative Design Activity (C…

剑指offer之两个队列实现栈的问题

1 问题 两个队列实现栈的插入和获取头部元素的功能 2 分析 1&#xff09;获取头部元素的功能分析&#xff1a; 我们有2个队列&#xff0c;我们知道队列的特点的先进先出&#xff0c;而栈的特点是先进后出&#xff0c;比如我们有数据1,2,3,4,我们分别依次压入队列1&#xff0…

solr的空间查询(查询地图周围坐标)

原文网址&#xff1a;http://www.cnblogs.com/hanhuibing/articles/5680616.html 基于Solr的空间搜索 如果需要对带经纬度的数据进行检索&#xff0c;比如查找当前所在位置附近1000米的酒店&#xff0c;一种简单的方法就是&#xff1a;获取数据库中的所有酒店数据&#xff0c;…