背景
Turtle库是Python语言中一个很流行的绘制图像的函数库
turttle(海龟)库是turtle绘图体系python的实现。
turtle :1969年诞生,作用:程序设计入门
turtle库是python的标准库之一,入门级别的图形绘制函数
最近偶然看到了python中turtle的库,感觉很有意思
由于在查找库中的函数时没有找到完整的介绍,于是去翻找turtle库的相关文档
将文档中的内容记录,加一些学习时的注解如下
文档:https://docs.python.org/3/library/turtle.html
turtle库函数
海龟的坐标改变及移动
turtle.forward(distance) 或turtle.fd(distance) 示例:turtle.forward(25) ,turtle.forward(-25)
前进distance像素,可通过函数使海龟向前或向后移动,数值为正数向前移动
turtle.back(distance) 或turtle.bk(distance) 或turtle.backward(distance) 示例:turtle.backward(30)
后退distance像素,可通过函数使海龟向前或向后移动,数值为正数向后移动
turtle.right(angle) 或turtle.rt(angle) 示例:turtle.right(45)
以海龟角度向右改变方向,改变的是角度,数值为正数时顺时针旋转,既从20°转到335°
turtle.left(angle) 或turtle.lt(angle) 示例:turtle.left(45)
以海龟角度向左改变方向,改变的是角度,数值为正数时逆时针旋转,既从20°转到65°
turtle.goto(x, y=None) 或turtle.setpos(x, y=None) 或turtle.setposition(x, y=None) 示例:turtle.setpos(60,30) ,turtle.setpos((20,80)) ,turtle.setpos(tp)
由当前坐标前往指定坐标,这里使用绝对坐标,但画笔方向不会改变
turtle.setx(x) 示例:turtle.setx(10)
将当前x轴移动到指定位置,更改后x坐标将变更为10
turtle.sety(y) 示例:turtle.sety(10)
将当前y轴移动到指定位置,更改后y坐标将变更为10
turtle.setheading(to_angle) 或turtle.seth(to_angle) 示例:turtle.setheading(90)
设置当前的朝向,0是东方,180是西方,90是北方,270是南方
turtle.home() 示例:turtle.home()
设置当前画笔位置为原点,朝向东。既回归到原点,坐标为0,0 ,方向为0
turtle.circle(radius, extent=None, steps=None) 示例:turtle.circle(120, 180)
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 如果半径为正,则沿逆时针方向画圆弧,否则沿顺时针方向画圆弧
如果没有给出extent,则绘制整个圆。如果范围不是一个完整的圆,圆弧的一个端点是当前笔的位置
turtle.dot(size=None, *color) 示例:turtle.dot(20, "blue")
绘制一个指定直径和颜色的圆点
控制画布及海龟运动
turtle.stamp() 示例:turtle.stamp()
在当前海龟位置的画布上加盖一个海龟形状的副本。返回该戳记的stamp_id,可以通过调用clearstamp(stamp_id)来删除它。
turtle.clearstamp(stampid) 示例:astamp = turtle.stamp() turtle.clearstamp(astamp)
删除带有给定stampid的戳记
turtle.clearstamps(n=None) 示例:turtle.clearstamps(-2) turtle.clearstamps(2)
删除所有或第一个/最后n个海龟的戳记。如果n为None,则删除所有戳记,如果n > 0则删除前n个戳记,否则如果n < 0则删除后n个戳记
turtle.undo() 示例:turtle.undo()
(重复地)撤消最后一个海龟操作。可用的撤消动作的数量由撤消缓冲区的大小决定。
turtle.speed(speed=None) 示例:turtle.speed() turtle.speed(3) turtle.speed('normal')
将海龟的速度设置为0..10范围内的整数值。如果没有给出参数,则返回当前速度。
如果输入的数字大于10或小于0.5,则speed设置为0 “fastest”: 0 “fast”: 10 “normal”: 6 “slow”: 3 “slowest”: 1
从1到10的速度使得画线和乌龟旋转的动画速度越来越快。
注意:speed = 0表示没有动画发生。向前/向后会让乌龟跳起来,向左/向右也会让乌龟立刻转身。
获取海龟运动的状态
turtle.position() 或turtle.pos() 示例:turtle.pos()
返回海龟的当前位置(x,y)
turtle.towards(x, y=None) 示例:turtle.towards(0,0)
返回海龟当前位置与(x,y)、向量或其他海龟指定位置之间的夹角,如返回当前位置与原点的角度
turtle.xcor() turtle.ycor()
返回海龟的x或y坐标。
turtle.heading() 示例:turtle.heading()
返回海龟当前头部的角度
turtle.distance(x, y=None) 示例:turtle.distance(30,40) turtle.distance((30,40))
以海龟步长单位返回海龟到给定向量(x,y)或给定其他海龟的距离。如原点坐标到坐标30,40的距离为50(勾股定理)
设置海龟转动的单位
turtle.degrees(fullcircle=360.0) 示例:turtle.degrees(400.0)
设置角度测量单位,该方法用于将角度测量单位设置为度。默认情况下,角度测量单位是“度”。
如设置degrees(90),在使用left(90)将会从逆时针转90变为逆时针22.5 (即degrees修改的数值与默认的360之间的倍数关系)
注:degrees设置的数值/360*转动的数值,如left(90)在设置degrees(90)后转动的数值将由90改为22.5
turtle.radians() 示例:turtle.radians()
设置角度测量单位为弧度。相当于degrees(2*math.pi)
注:2*转动的数值/360 *pi, pi是圆周率的值 left(90) 转化为弧度后相当于 1.5707963267948966(pi值的一半)
画笔控制及颜色设置
turtle.pendown() 或turtle.pd() 或turtle.down()
在画布上落笔,移动时绘制图形默认为落笔状态
turtle.penup() 或turtle.pu() 或turtle.up()
提笔,在画笔移动时不绘制图形
turtle.pensize(width=None) 或turtle.width(width=None) 示例:turtle.pensize() turtle.pensize(10)
将线条粗细设置为width或返回width 当设置的值为空时返回当前pensize
turtle.pen(pen=None, **pendict) 示例:turtle.pen(fillcolor="black", pencolor="red", pensize=10)
使用以下键/值对在“笔字典”中返回或设置笔的属性:
“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
该字典可以用作后续调用pen()的参数,以恢复以前的笔状态。
此外,这些属性中的一个或多个可以作为关键字参数提供。这可用于在一条语句中设置多个钢笔属性。
turtle.isdown()
判断落笔状态。如果钢笔是down,则返回True,如果是up,则返回False。
turtle.color(*args)
返回或设置笔色和填充色。同时设置笔色和填充色
允许多种输入格式。它们使用0到3个参数,如下所示:
color() 示例:turtle.color()
以一对颜色规范字符串或元组的形式返回当前的钢笔颜色和当前的填充颜色,该字符串由pencolor()和fillcolor()返回。
color(colorstring), color((r,g,b)), color(r,g,b)
在pencolor()中,将fillcolor和pencolor都设置为给定的值。
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) 示例:turtle.color("#285078", "#a0c8f0") turtle.color((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))
相当于pencolor(colorstring1)和fillcolor(colorstring2),如果使用其他输入格式,也类似。
画笔填充设置
turtle.filling()
返回填充状态(填充时为true,否则为false)
turtle.begin_fill()
在绘制要填充的形状之前调用,准备进行填充工作
turtle.end_fill()
填充上次调用begin_fill()后绘制的形状,进行填充
清除绘图及文本书写
turtle.reset()
从屏幕上删除海龟的绘图,重新将海龟居中,并将变量设置为默认值。
turtle.clear()
从屏幕上删除海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。
turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal')) 示例:turtle.write("Home = ", True, align="center")
写文本,参数如下:
arg – 书写的信息
move – True/False
align – “left”, “center” or right” 字符串对齐,左、右、居中
font – (fontname, fontsize, fonttype) 字体(字体名称,字体大小,字体类型)
海龟形状设置
turtle.hideturtle() 或turtle.ht()
让海龟隐形。当你在做一些复杂的绘图时,这样做是个好主意,因为隐藏海龟可以显著地加快绘图速度。
turtle.showturtle() 或turtle.st()
让海龟可见
turtle.isvisible()
判断海龟是否可见,如果显示海龟则返回True,如果隐藏则返回False。
turtle.shape(name=None)
将海龟形状设置为具有给定名称的形状,如果没有给定名称,则返回当前形状的名称。
有名称的形状必须存在于TurtleScreen的形状字典中。最初有以下多边形形状:
arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”.
“箭头”,“乌龟”,“圆形”,“正方形”,“三角形”,“经典”
turtle.resizemode(rmode=None)
设置resizemode为其中一个值:" auto ", " user ", " noresize "。如果没有给出rmode,则返回当前的大小调整模式。
不同的调整大小模式有以下影响:
" auto ":根据pensize的值调整海龟的外观。
" user ":根据shapesize()设置的拉伸因子(stretchfactor)和轮廓宽度(outline)值来调整海龟的外观。
“noresize”:海龟的外观没有发生任何变化。
turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)
示例:turtle.shapesize(5, 5, 12) turtle.shapesize(outline=8) turtle.shapesize()
返回或设置笔的属性。设置调整大小模式为“user”。
当且仅当resizemode设置为" user "时,海龟将根据其拉伸因子被拉伸显示:
stretch_wid是垂直于其方向的拉伸因子,stretch_len是与其方向相同的拉伸因子,outline决定了形状轮廓的宽度。
turtle.shearfactor(shear=None) 示例:turtle.shearfactor(0.5)
设置或返回当前剪切因子。根据给定的剪切因子Shear(剪切角的切线)剪切海龟形状。不改变海龟龟的运动方向。
如果未给出shear:返回当前的剪切因子,即剪切角的切线,平行于海龟头部的线将被剪切。
turtle.tilt(angle) 示例:turtle.tilt(30) 旋转30
将海龟形状从当前的倾斜角度旋转一个角度,但不改变海龟的朝向(移动方向)
注:改变的是海龟形状的倾斜角度,比如人直着走路改为斜着走路,但走过的路方向不变,距离不变
turtle.settiltangle(angle) 示例:turtle.settiltangle(45) 旋转到45
旋转海龟形状以指向由角度指定的方向,而不考虑其当前的倾斜角
turtle.tiltangle(angle=None) 示例:turtle.tiltangle() turtle.tiltangle(45)
设置或返回当前的倾斜角度。如果给出了angle,则旋转海龟形状以指向由angle指定的方向,而不考虑其当前的倾斜角,与settiltangle类似。
如果没有给出angle:返回当前的倾斜角度,即海龟形状的方向和海龟的航向(它的运动方向)之间的角度。
turtle.shapetransform(t11=None, t12=None, t21=None, t22=None) 示例:turtle.shapetransform() turtle.shapetransform(4.0, -1.0, -0.0, 2.0)
设置或返回海龟形状的当前变换矩阵。
如果没有给出任何矩阵元素,则将转换矩阵返回为包含4个元素的元组。
否则,设置给定的元素,并根据由第一行t11, t12和第二行t21, t22组成的矩阵变换海龟形状。
行列式t11 * t22 - t12 * t21不能为零,否则会引发错误。根据给定矩阵修改拉伸因子、剪切因子和倾斜角
turtle.get_shapepoly()
返回当前形状多边形为坐标对的元组。这可用于定义新形状或复合形状的组件。
符合海龟形状示例:
s = turtle.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")
turtle.register_shape("myshape", s)
turtle.shape("myshape")
海龟事件使用
turtle.listen(xdummy=None, ydummy=None)
将焦点设置在TurtleScreen上(以便收集按键事件)。提供虚拟参数是为了能够将listen()传递给onclick方法。
turtle.onkey(fun, key) 或turtle.onkeyrelease(fun, key)
示例:
def f():
fd(50)
lt(60)
screen.onkey(f, "Up")
screen.listen()
fun -一个没有参数或None的函数
Key-字符串:键(如" a ")或键符号(如" space ")
绑定fun到key的键释放事件。如果fun为None,则删除事件绑定。
注:为了能够注册键事件,TurtleScreen必须有焦点。(参见方法listen())
turtle.onkeypress(fun, key=None)
如果给出了键,则将fun绑定到键的按键事件,如果没有给出键,则将fun绑定到任何按键事件。
注:为了能够注册键事件,TurtleScreen必须有焦点。(参见方法listen())
turtle.onclick(fun, btn=1, add=None) 或turtle.onscreenclick(fun, btn=1, add=None)
示例:
def turn(x,y):
Turtle.left(180)
turtle.onclick(turn)
注:添加事件后需要点击海龟才会触发事件,点击空白处无效
将fun绑定到此海龟上的鼠标单击事件。如果fun为None,则删除现有的绑定,参数:
Fun -一个带有两个参数的函数,将使用画布上点击点的坐标来调用
BTN -鼠标按键的个数,默认为1(鼠标左键)
add - True或False -如果为True,将添加一个新的绑定,否则将替换以前的绑定
turtle.onrelease(fun, btn=1, add=None) 示例:turtle.onrelease(turn)
将fun绑定到这个海龟上的鼠标按钮释放事件。如果fun为None,则删除现有的绑定。
turtle.ondrag(fun, btn=1, add=None)
将fun绑定到这个海龟上的鼠标移动事件。如果fun为None,则删除现有的绑定。
注:在海龟上的每个鼠标移动事件序列之前都有一个鼠标单击事件。
turtle.ondrag(turtle.goto)
随后,点击并拖动Turtle将在屏幕上移动它,从而生成手绘图(如果笔已放下)
turtle.ontimer(fun, t=0)
安装一个定时器,在t毫秒后调用fun。
turtle.mainloop() 或turtle.done()
启动事件循环-调用Tkinter的主循环函数。必须是turtle图形程序中的最后一条语句。
如果脚本在IDLE中以-n模式(无子进程)运行,则不能使用-用于turtle图形的交互式使用。
特殊方法及配置
turtle.begin_poly()
开始记录多边形的顶点。当前海龟的位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前海龟的位置是多边形的最后一个顶点。它与第一个顶点相连
turtle.get_poly()
返回最后记录的多边形。
注:可将画出的多边形记录为海龟形状
turtle.clone() 示例:joe=turtle.clone()
创建并返回一个具有相同位置、标题和海龟属性的海龟克隆。
turtle.getturtle() 或turtle.getpen() pet=turtle.getturtle()
返回Turtle对象本身 仅合理使用:作为返回“匿名海龟”的函数
turtle.getscreen() 示例:ts = turtle.getscreen()
返回海龟正在使用的TurtleScreen对象。然后可以为该对象调用TurtleScreen方法。
turtle.setundobuffer(size) 示例:turtle.setundobuffer(30)
设置或禁用撤销缓冲区。
如果size为整数,则安装给定大小的空撤销缓冲区。
Size给出了可以通过undo()方法撤消的海龟动作的最大数量。如果size为None,则禁用撤销缓冲区。
turtle.undobufferentries()
返回撤销缓冲区中的条目数。
turtle.textinput(title, prompt) 示例:screen.textinput("NIM", "Name of first player:")
弹出一个对话框窗口输入字符串。参数title是对话框窗口的标题,prompt是一个文本,主要描述要输入什么信息。
返回输入的字符串。如果对话框被取消,返回None。
turtle.numinput(title, prompt, default=None, minval=None, maxval=None) 示例:screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
弹出一个对话框窗口输入一个数字。标题是对话框窗口的标题,提示符是描述要输入什么数字信息的文本。
Default:默认值,minval:最小输入值,maxval:最大输入值。输入的数字必须在最小值范围内。
如果符合这些给定的值则返回。如果不是,则会发出提示,并保持对话框打开以供更正。
返回输入的数字。如果对话框被取消,返回None。
turtle.mode(mode=None)
设置海龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出mode,则返回当前模式。
“standard”模式与老turtle兼容。“logo”模式与大多数logo海龟图形兼容。
模式“world”使用用户自定义的“世界坐标”。注意:在此模式下,如果x/y单位比不等于1,角度会出现扭曲。
turtle.colormode(cmode=None)
返回颜色模式或将其设置为1.0或255。因此,颜色三元组的r, g, b值必须在0..cmode范围内。
turtle.getcanvas() 示例:cv = screen.getcanvas()
返回这个TurtleScreen的Canvas。对于知道如何使用Tkinter Canvas的内部人员有用。
turtle.getshapes()
返回当前所有可用海龟形状的名称列表。
turtle.register_shape(name, shape=None) 或turtle.addshape(name, shape=None)
添加一个海龟形状到TurtleScreen的形状列表。只有通过发出命令shape(shapename)才能使用这样注册的形状。
有三种不同的方法来调用这个函数:
name为gif文件的名称,shape为None:安装对应的图像形状。 screen.register_shape("turtle.gif")
name是任意字符串,shape是坐标对的元组:安装相应的多边形形状。 screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
name为任意字符串,shape为(复合)形状对象:安装相应的复合形状。
窗口设置及使用
turtle.turtles()
返回屏幕上的海龟列表
turtle.window_height() turtle.window_width()
返回海龟窗口的高度/宽度
turtle.bye()
关闭海龟图形窗口
turtle.exitonclick()
将bye()方法绑定到屏幕上的鼠标点击。
如果配置字典中的“using_IDLE”值为False(默认值),也需要进入mainloop。
注:如果使用-n开关的IDLE(没有子进程),在turtle.cfg中该值应该设置为True。在这种情况下,IDLE自己的主循环对于客户端脚本也是活动的。
turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])
示例:screen.setup(width=.75, height=0.5, startx=None, starty=None) screen.setup (width=200, height=200, startx=0, starty=0)
设置主窗口的大小和位置。参数的默认值存储在配置字典中,可以通过turtle.cfg文件更改。
width -如果是整数,则为像素大小,如果是浮点数,则为屏幕的一个分数;默认是屏幕的50%
height-如果是整数,高度以像素为单位,如果是浮点数,屏幕的一个分数;默认是屏幕的75%
startx -如果为正值,表示距离屏幕左边缘的起始位置(单位为像素),如果为负值,表示距离屏幕右边缘的起始位置,如果为None,表示窗口水平居中
starty -如果是正的,起始位置距离屏幕上边缘的像素,如果是负的,距离屏幕下边缘的像素,如果是None,垂直居中窗口
turtle.title(titlestring) 示例:turtle.title(“mine”)
设置海龟窗口的标题为titlestring。
海龟视图函数
turtle.bgcolor(*args) 示例:screen.bgcolor("#800080") screen.bgcolor("orange") screen.bgcolor((128.0, 0.0, 128.0))
设置或返回TurtleScreen的背景色
turtle.bgpic(picname=None) 示例:screen.bgpic("landscape.gif")
设置背景图像或返回当前背景图像的名称。如果picname是文件名,则将相应的图像设置为背景。
如果picname是"nopic",删除存在的背景图像。如果picname为None,返回当前背景图片的文件名。
turtle.clear()
注:这个TurtleScreen方法仅在名称clearscreen下作为全局函数可用。全局函数clear是由Turtle方法clear衍生出来的一个不同的函数
turtle.clearscreen()
从TurtleScreen中删除所有图纸和所有海龟。重置现在空的TurtleScreen到它的初始状态:白色背景,没有背景图像,没有事件绑定和跟踪
turtle.reset()
注:此TurtleScreen方法仅在名称resetscreen下作为全局函数可用。全局函数reset是另一个衍生自Turtle方法reset的函数。
turtle.resetscreen()
将屏幕上所有海龟重置为初始状态。
turtle.screensize(canvwidth=None, canvheight=None, bg=None) 示例:screen.screensize(2000,1500)
参数如下:
画布宽度-正整数,以像素为单位的画布新宽度
画布高度-正整数,以像素为单位的画布新高度
bg - colorstring (“red”)或color-tuple (“#800080”),新的背景颜色
如果没有给出参数,则返回current (canvaswidth, canvasheight)。否则调整海龟正在绘制的画布的大小。
不更改绘图窗口。要观察画布的隐藏部分,请使用滚动条。使用这种方法,可以使以前在画布之外的部分可见。
turtle.setworldcoordinates(llx, lly, urx, ury) 示例:screen.setworldcoordinates(-50,-7.5,50,7.5)
设置自定义坐标系,必要时切换到“world”模式。这将执行screen.reset()。如果模式“world”已经激活,则所有图纸将根据新的坐标重新绘制。
海龟动画控制
turtle.delay(delay=None) 示例:turtle.delay(5)
设置或返回以毫秒为单位的绘图延迟。(这大约是连续两次画布更新之间的时间间隔) 绘制延迟越长,动画速度越慢
turtle.tracer(n=None, delay=None) 示例:screen.tracer(8, 25)
打开/关闭海龟动画,并设置更新图纸的延迟。如果给出n,则只执行第n次常规屏幕更新。(可用于加速复杂图形的绘制)
当不带参数调用时,返回当前存储的n值。第二个参数设置延迟值(参见delay())
turtle.update()
执行TurtleScreen更新。当跟踪器关闭时使用
公共类使用
class turtle.RawTurtle(canvas) 或class turtle.RawPen(canvas)
创建一个海龟。turtle拥有上面描述的“turtle /RawTurtle的方法”。
class turtle.Turtle
RawTurtle的子类,具有相同的接口,但在第一次需要时自动创建一个默认的Screen对象
class turtle.TurtleScreen(cv)
提供如上所述的面向屏幕的方法,如bgcolor()等。
class turtle.Screen
TurtleScreen的子类,添加了四个方法。
class turtle.ScrolledCanvas(master)
master:包含ScrolledCanvas的Tkinter小部件,即添加了滚动条的Tkinter小部件
由Screen类使用,从而自动提供ScrolledCanvas作为海龟的游乐场。
class turtle.Shape(type_, data)
数据结构建模形状。对(type_, data)必须遵循以下规范:
“polygon”多边形元组,即坐标对的元组
" image "图像(仅在内部使用)
" compound "无(必须使用addcomponent()方法构造复合形状)
addcomponent(poly, fill, outline=None)
poly-多边形,即数字对的元组
fill-多边形将被填充的颜色
outline-多边形轮廓的颜色(如果给定)
示例:
poly = ((0,0),(10,-5),(0,10),(-10,-5))
s = Shape("compound")
s.addcomponent(poly, "red", "blue")
class turtle.Vec2D(x, y)
一个二维矢量类,用作实现海龟图形的辅助类。可能对海龟图形程序也有用。来自元组,所以一个向量是一个元组!
提供(对于a, b向量,k数):
a + b向量的加法
a - b向量减法
a * b内积
K * a和a * K乘标量
abs (a) a的绝对值
a.rotate旋转(角度)
帮助和配置
Screen和Turtle类的公共方法通过文档字符串进行了广泛的记录。所以这些可以通过Python帮助工具作为在线帮助使用:
当使用IDLE时,工具提示显示函数/方法调用中键入的签名和文档字符串的第一行。
在方法或函数上调用help()会显示文档字符串
示例:help(Screen.bgcolor) help(Turtle.penup)
- 从方法派生的函数的文档字符串有一个修改的形式:
示例:help(bgcolor) help(penup)
注:这些修改后的文档字符串与导入时从方法派生的函数定义一起自动创建。
turtle.write_docstringdict(filename='turtle_docstringdict')
创建并将docstring-dictionary写入具有给定文件名的Python脚本。
这个函数必须显式调用(turtle图形类不使用它)。文档字符串字典将被写入Python脚本filename.py。
它的目的是作为将文档字符串翻译成不同语言的模板。
内置的默认配置模仿了旧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的参数。
第5行和第6行对应于Screen.screensize方法的参数。
Shape可以是任何内置的形状,例如:箭头、海龟等。
如果你想使用无填充颜色(即使海龟透明),你必须写fillcolor = ""(注:在cfg文件中非空字符串不能有引号)。
如果你想要反映海龟的状态,你必须使用resizemode = auto。
如果你设置例如language = italian, docstringdict turtle_docstringdict_italian.py将在导入时被加载(如果在导入路径上,例如与turtle在同一个目录中)。
exampleturtle和examplescreen条目定义了这些对象在文档字符串中出现的名称。将方法文档字符串转换为函数文档字符串将从文档字符串中删除这些名称。
using_IDLE:如果你经常使用IDLE和它的-n开关(“无子进程”),将此设置为True。这将阻止exitonclick()进入主循环。
注:在存放turtle的目录中可以有一个turtle.cfg文件,在当前工作目录中可以有另外一个文件。后者将覆盖第一个的设置。
Demo示例
turtledemo包包含一组演示脚本。这些脚本可以使用提供的演示查看器运行和查看,如下所示:
python -m turtledemo
或者,您也可以单独运行演示脚本。例如,
python -m turtledemo.bytedesign
turtledemo包目录包含:
一个演示查看器__main__.py,它可以用来查看脚本的源代码并同时运行它们。
演示turtle模块不同特性的多个脚本。示例可以通过示例菜单访问。它们也可以独立运行。
一个turtle.cfg文件,作为如何编写和使用此类文件的示例。
演示脚本如下,以下三列,分别是demo的名称,大致方向的描述及使用的海龟特性:
bytedesign 复杂经典海龟图形模式 tracer(), delay, update()
chaos Verhulst的动态图显示,计算机的计算有时可以产生与常识预期相反的结果 world coordinates (世界坐标)
clock 模拟时钟显示您的计算机时间 此时海龟像时钟的指针,计时器
colormixer 实验与r, g, b(调色盘) ondrag()
forest 3颗广度优先树 randomization(随机化)
fractalcurves 希尔伯特&科赫曲线 recursion(递归)
lindenmayer 民族数学(印度科拉姆) L-System
minimal_hanoi 河内塔实现 河内圆盘形的矩形海龟(形状,形状)
nim 用三堆木棍对着电脑玩经典的尼姆游戏。 海龟作为nimsticks,事件驱动(鼠标,键盘)
paint 超简约的绘图程序 onclick()
peace 基本的 海龟:外观和动画
penrose 用风筝和飞镖进行非周期性的贴片 stamp()
planet_and_moon 引力系统的模拟 compound shapes(复合形状), Vec2D
rosette 来自维基百科关于海龟图形的文章的一个模式 clone(), undo()
round_dance 跳舞的海龟在相反的方向成对旋转 compound shapes(复合形状), clone shapesize(克隆形状), tilt, get_shapepoly, update
sorting_animate 不同排序方法的可视化演示 简单的排列,随机化
tree (图形化的)广度优先树(使用生成器) clone()
two_canvases 简单设计两张画布上的海龟
yinyang 另一个简单的例子circle()
扩展--旋转的阴阳鱼
以下由turtle中自带的demo示例--yinyang扩展而来,旋转的阴阳鱼
源文件在python的lib目录下,如:D:\python3\Lib\turtledemo
#!/usr/bin/python
# -*- coding: utf-8 -*-
import turtle
import time
class taiji(object):
def __init__(self,radius,color1,color2):
#半径、阴(黑)、阳(白)
self.radius = radius
self.color1 = color1
self.color2 = color2
self.t=turtle
def draw(self):
#初始化,设置画笔粗细
self.t.width(2)
#画阴
self.t.color("black",self.color1)
self.t.begin_fill()
self.t.circle(self.radius/2,180)
self.t.circle(self.radius,180)
self.t.left(180)
self.t.circle(-self.radius/2,180)
self.t.end_fill()
self.t.left(90)
self.t.up()
self.t.forward(self.radius*0.5)
self.t.down()
self.t.color(self.color1,self.color2)
self.t.begin_fill()
self.t.circle(self.radius*0.15)
self.t.end_fill()
self.t.up()
self.t.backward(self.radius*0.5)
self.t.down()
self.t.right(90)
#画阳
self.t.color("black",self.color2)
self.t.begin_fill()
self.t.circle(self.radius/2,180)
self.t.right(180)
self.t.circle(-self.radius,180)
self.t.circle(-self.radius/2,180)
self.t.end_fill()
self.t.left(90)
self.t.up()
self.t.backward(self.radius*0.5)
self.t.down()
self.t.color(self.color2,self.color1)
self.t.begin_fill()
self.t.circle(self.radius*0.15)
self.t.end_fill()
#隐藏海龟,回到原点
self.t.ht()
self.t.home()
def update(self,radius):
#旋转角度,使阴阳鱼变动
self.t.right(radius)
#通过以下部分,在关闭画布窗口时,不在命令行打印错误日志
wn = turtle.Screen()
canvas = wn.getcanvas() # or, equivalently: turtle.getcanvas()
root = canvas.winfo_toplevel()
def on_close():
global running
running = False
root.protocol("WM_DELETE_WINDOW", on_close)
def start():
global running
running = True
tj=taiji(200,"black","white")
#关闭动画
turtle.tracer(0)
#固定旋转角度
radius=10
#循环画图
while running:
#清除
turtle.reset()
tj.update(radius)
tj.draw()
turtle.update()
#添加时间间隔,让阴阳鱼慢慢旋转
time.sleep(0.05)
radius+=10
if __name__ == '__main__':
print ("start...")
start()
版权归原作者 Automato 所有, 如有侵权,请联系我们删除。