700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 标准库:turtle --- 海龟绘图

标准库:turtle --- 海龟绘图

时间:2018-09-29 13:40:53

相关推荐

标准库:turtle --- 海龟绘图

Lib/turtle.py

海龟绘图很适合用来引导孩子学习编程。

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

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

TurtleScreen类定义图形窗口作为绘图海龟的运动场。

Screen()函数返回一个TurtleScreen子类的单例对象。

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

RawTurtle(别名:RawPen) 类定义海龟对象在TurtleScreen上绘图。

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

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

过程式接口提供与Screen和Turtle类的方法相对应的函数。函数名与对应的方法名相同。

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

RawTurtle/Turtle 方法和对应函数

海龟动作

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

海龟前进distance指定的距离。distance-- 一个数值 (整型或浮点型)。

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

海龟后退distance指定的距离。distance-- 一个数值 (整型或浮点型)。

import turtleturtle.fd(200.0)turtle.bk(100.0)turtle.done()

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

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

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

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

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

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

import turtleturtle.rt(90.0)turtle.lt(180.0)turtle.done()

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

参数:x-- 一个数值或数值对/向量y-- 一个数值或None

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

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

turtle.setx(x)

参数:x-- 一个数值 (整型或浮点型)

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

turtle.sety(y)

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

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

import turtleturtle.speed(1)turtle.goto(100.0, 0)turtle.goto(100.0, 50.0)turtle.goto(0, 0)turtle.setx(100.0)turtle.sety(50.0)turtle.done()

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

参数:to_angle-- 一个数值 (整型或浮点型)

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

import turtleturtle.speed(1)turtle.seth(90)turtle.done()

turtle.home()

海龟移至初始坐标 (0,0),并设置朝向为初始方向 (由海龟模式确定,参见mode())。

turtle.circle(radius,extent=None,steps=None)

参数:radius-- 一个数值extent-- 一个数值 (或None)steps-- 一个整型数 (或None)

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

import turtleturtle.speed(1)turtle.circle(100)turtle.circle(-100, None, 20)turtle.goto(200, 0)turtle.circle(-100, 180, )turtle.home()turtle.done()

turtle.dot(size=None,*color)

参数:size-- 一个整型数 >= 1 (如果指定)color-- 一个颜色字符串或颜色数值元组

绘制一个直径为size,颜色为color的圆点。如果size未指定,则直径取 pensize+4 和 2*pensize 中的较大值。

import turtleturtle.speed(1)turtle.dot(50, 'red')turtle.done()

turtle.stamp()

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

turtle.clearstamp(stampid)

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

删除stampid指定的印章。

turtle.clearstamps(n=None)

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

删除全部或前/后n个海龟印章。如果n为None则删除全部印章,如果n> 0 则删除前n个印章,否则如果n< 0 则删除后n个印章。

import turtleturtle.speed(1)stamp1 = turtle.stamp()turtle.goto(100, 100)stamp2 = turtle.stamp()turtle.clearstamp(stamp1)turtle.goto(100, 200)turtle.clearstamps(1)turtle.done()

turtle.undo()

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

turtle.speed(speed=None)

参数:speed-- 一个 0..10 范围内的整型数或速度字符串 (见下)

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

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

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

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

import turtleturtle.speed(1)stamp1 = turtle.stamp()turtle.goto(100, 100)turtle.goto(200, 200)turtle.undo()turtle.undo()turtle.done()

获取海龟的状态

turtle.position()、turtle.pos()

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

import turtleturtle.speed(1)turtle.goto(100, 100)print(turtle.pos())turtle.done()

turtle.towards(x,y=None)

参数:x-- 一个数值或数值对/矢量,或一个海龟实例y-- 一个数值——如果x是一个数值,否则为None

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

import turtleturtle.speed(1)print(turtle.towards(4, 4))turtle.done()

turtle.xcor()

返回海龟的 x 坐标。

turtle.ycor()

返回海龟的 y 坐标。

turtle.heading()

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

import turtleturtle.speed(1)turtle.goto(50, 50)print(turtle.xcor())print(turtle.ycor())turtle.left(30)print(turtle.heading())turtle.done()

turtle.distance(x,y=None)

参数:x-- 一个数值或数值对/矢量,或一个海龟实例y-- 一个数值——如果x是一个数值,否则为None

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

import turtleturtle.speed(1)print(turtle.distance(3,4))turtle.done()

度量单位设置

turtle.degrees(fullcircle=360.0)

参数:fullcircle-- 一个数值

设置角度的度量单位,即设置一个圆周为多少 "度"。默认值为 360 度。

turtle.radians()

设置角度的度量单位为弧度。其值等于degrees(2*math.pi)

import mathimport turtleturtle.speed(1)turtle.left(180)turtle.radians()turtle.left(math.pi)turtle.degrees()turtle.left(360)turtle.done()

画笔控制

绘图状态

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.pen(pen=None,**pendict)

参数:pen-- 一个包含部分或全部下列键的字典pendict-- 一个或多个以下列键为关键字的关键字参数

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

此字典可作为后续调用pen()时的参数,以恢复之前的画笔状态。另外还可将这些属性作为关键词参数提交。使用此方式可以用一条语句设置画笔的多个属性。

turtle.isdown()

如果画笔落下返回True,如果画笔抬起返回False

import turtleturtle.speed(1)turtle.up()print('turtle is down:{}'.format(turtle.isdown()))turtle.down()print('turtle is down:{}'.format(turtle.isdown()))turtle.width(10)turtle.goto(100, 100)turtle.width(3)turtle.goto(100, 200)dict1 = turtle.pen()for k in dict1.keys():print('{}:{}'.format(k,dict1[k]))turtle.done()

颜色控制

turtle.pencolor(*args)

返回或设置画笔颜色。

允许以下四种输入格式:

pencolor()

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

pencolor(colorstring)

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

pencolor((r,g,b))

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

pencolor(r,g,b)

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

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

import turtleturtle.pencolor('red')turtle.setx(50)turtle.pencolor((0, 1, 0))turtle.setx(100)print(turtle.pencolor())turtle.pencolor(0, 0, 1.0)turtle.setx(150)turtle.done()

turtle.fillcolor(*args)

返回或设置填充颜色。

允许以下四种输入格式:

fillcolor()

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

fillcolor(colorstring)

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

fillcolor((r,g,b))

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

fillcolor(r,g,b)

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

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

import turtleturtle.begin_fill()turtle.fillcolor('red')turtle.setx(50)turtle.sety(50)turtle.setx(0)turtle.sety(0)turtle.end_fill()turtle.done()

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

返回填充状态 (填充为True,否则为False)。

turtle.begin_fill()

在绘制要填充的形状之前调用。

turtle.end_fill()

填充上次调用begin_fill()之后绘制的形状。

import turtleprint(turtle.filling())turtle.begin_fill()print(turtle.filling())turtle.color('red', 'blue')turtle.setx(50)turtle.sety(50)turtle.setx(0)turtle.sety(0)turtle.end_fill()turtle.done()

更多绘图控

turtle.reset()

从屏幕中删除海龟的绘图,海龟回到原点并设置所有变量为默认值。

turtle.clear()

从屏幕中删除指定海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。

turtle.write(arg,move=False,align='left',font='Arial', 8, 'normal')

参数:arg-- 要书写到 TurtleScreen 的对象move-- True/Falsealign-- 字符串 "left", "center" 或 "right"font-- 一个三元组 (fontname, fontsize, fonttype)

基于align("left", "center" 或 "right") 并使用给定的字体将文本 ——arg的字符串表示形式 —— 写到当前海龟位置。 如果move为真值,画笔会移至文本的右下角。 默认情况下move为False

import turtleturtle.speed(1)turtle.penup()turtle.sety(-50)turtle.write('start')turtle.sety(0)turtle.reset()turtle.begin_fill()turtle.color('red', 'blue')turtle.setx(50)turtle.sety(50)turtle.setx(0)turtle.write((0, 0))turtle.sety(0)turtle.end_fill()turtle.color()turtle.done()

海龟状态

可见性

turtle.hideturtle()、turtle.ht()

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

turtle.showturtle()、turtle.st()

使海龟可见。

turtle.isvisible()

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

import turtleturtle.speed(1)turtle.begin_fill()turtle.color('red', 'blue')turtle.setx(500)turtle.sety(250)turtle.hideturtle()print(turtle.isvisible())turtle.setx(0)turtle.write((0, 0))turtle.showturtle()print(turtle.isvisible())turtle.sety(0)turtle.end_fill()turtle.color()turtle.done()

外观

turtle.shape(name=None)

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

设置海龟形状为name指定的形状名,如未指定形状名则返回当前的形状名。name指定的形状名应存在于 TurtleScreen 的 shape 字典中。

多边形的形状初始时有以下几种: "arrow", "turtle", "circle", "square", "triangle", "classic"。要了解如何处理形状请参看 Screen 方法register_shape()。

import turtleturtle.speed(1)print(turtle.shape())turtle.shape("turtle")print(turtle.shape())turtle.setx(500)turtle.shape("circle")print(turtle.shape())turtle.sety(250)turtle.shape("triangle")print(turtle.shape())turtle.setx(0)turtle.shape("classic")print(turtle.shape())turtle.sety(0)turtle.done()

turtle.resizemode(rmode=None)

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

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

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

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

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

resizemode("user")会由shapesize()带参数使用时被调用。

turtle.shapesize(stretch_wid=None,stretch_len=None,outline=None)、turtle.turtlesize(stretch_wid=None,stretch_len=None,outline=None)

参数:stretch_wid-- 正数值stretch_len-- 正数值outline-- 正数值

返回或设置画笔的属性 x/y-拉伸因子和/或轮廓。设置大小调整模式为 "user"。当且仅当大小调整模式设为 "user" 时海龟会基于其拉伸因子调整外观:stretch_wid为垂直于其朝向的宽度拉伸因子,stretch_len为平等于其朝向的长度拉伸因子,决定形状轮廓线的粗细。

turtle.shearfactor(shear=None)

参数:shear-- 数值 (可选)

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

import turtleturtle.speed(1)turtle.shape("turtle")turtle.setx(500)turtle.resizemode('user')turtle.shapesize(2, 2, 2)turtle.shearfactor(0.5)print(turtle.shearfactor())turtle.done()

turtle.tilt(angle)

参数:angle-- 一个数值

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

turtle.settiltangle(angle)

参数:angle-- 一个数值

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

turtle.tiltangle(angle=None)

参数:angle-- 一个数值 (可选)

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

import turtleturtle.speed(1)turtle.tilt(30)turtle.shape("turtle")turtle.setx(500)turtle.settiltangle(60)turtle.sety(250)turtle.tiltangle(180)turtle.done()

turtle.shapetransform(t11=None,t12=None,t21=None,t22=None)

参数:t11-- 一个数值 (可选)t12-- 一个数值 (可选)t21-- 一个数值 (可选)t12-- 一个数值 (可选)

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

如未指定任何矩阵元素,则返回以 4 元素元组表示的变形矩阵。 否则就根据设置指定元素的矩阵来改变海龟形状,矩阵第一排的值为 t11, t12 而第二排的值为 t21, t22。 行列式 t11 * t22 - t12 * t21 必须不为零,否则会引发错误。 根据指定矩阵修改拉伸因子 stretchfactor, 剪切因子 shearfactor 和倾角 tiltangle。

import turtleturtle.speed(1)turtle.shape("square")turtle.shapesize(4,2)turtle.shearfactor(-0.5)print(turtle.shapetransform())turtle.done()

turtle.get_shapepoly()

返回以坐标值对元组表示的当前形状多边形。这可以用于定义一个新形状或一个复合形状的多个组成部分

import turtleturtle.speed(1)turtle.shape("square")turtle.shapetransform(4, -1, 0, 2)print(turtle.get_shapepoly())turtle.done()

使用事件

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

参数:fun-- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。btn-- 鼠标按钮编号,默认值为 1 (鼠标左键)add--TrueFalse-- 如为True则将添加一个新绑定,否则将取代先前的绑定

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

import turtleturtle.speed(1)turtle.shape("turtle")turtle.shapesize(4, 4, 2)def turn(x, y):turtle.left(60)turtle.onclick(turn)turtle.done()

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

参数:fun-- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。btn-- 鼠标按钮编号,默认值为 1 (鼠标左键)add--TrueFalse-- 如为True则将添加一个新绑定,否则将取代先前的绑定

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

import turtleturtle.speed(1)turtle.shape("turtle")turtle.shapesize(4, 4, 2)def turn(x, y):turtle.left(60)turtle.onrelease(turn)turtle.done()

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

参数:fun-- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。btn-- 鼠标按钮编号,默认值为 1 (鼠标左键)add--TrueFalse-- 如为True则将添加一个新绑定,否则将取代先前的绑定

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

import turtleturtle.speed(1)turtle.shape("turtle")turtle.shapesize(2, 2, 2)turtle.ondrag(turtle.goto)# 拖动turtle.done()

特殊海龟方法

turtle.begin_poly()

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

turtle.end_poly()

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

turtle.get_poly()

返回最新记录的多边形。

turtle.clone()

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

turtle.getturtle()、turtle.getpen()

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

import turtleturtle.speed(1)turtle.shape('turtle')backup1 = turtle.clone() # 备份海龟,具有相同的位置、朝向和海龟属性。turtle.home()turtle.begin_poly()turtle.fd(100)turtle.shape('arrow')backup2 = turtle.getturtle() # 取得当前图形turtle.left(90)turtle.fd(45)turtle.home()turtle.end_poly()p = turtle.get_poly()turtle.register_shape("myFavouriteShape", p)turtle.shape('myFavouriteShape')turtle.goto(-200, 0) # 当前海龟移动backup1.goto(0, -200) # 备份海龟移动backup2.goto(0, 300) # 当前海龟移动turtle.done()

turtle.getscreen()

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

import turtleturtle.getscreen().bgcolor('red')turtle.done()

turtle.setundobuffer(size)

参数:size-- 一个整型数值或None

设置或禁用撤销缓冲区。 如果size为整数,则开辟一个给定大小的空撤销缓冲区。size给出了可以通过undo()方法/函数撤销海龟动作的最大次数。 如果size为None,则禁用撤销缓冲区。

turtle.undobufferentries()

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

复合形状

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

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

按照需要使用addcomponent()方法向此对象添加多个部件

接下来将 Shape 对象添加到 Screen 对象的形状列表并使用它

import turtleshape1 = turtle.Shape("compound")poly1 = ((0, 0), (10, -5), (0, 10), (-10, -5))shape1.addcomponent(poly1, "red", "blue")poly2 = ((0, 0), (10, -5), (-10, -5))shape1.addcomponent(poly2, "blue", "red")turtle.register_shape("myshape", shape1)turtle.shape("myshape")turtle.done()

注解

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

TurtleScreen/Screen 方法及对应函数

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

窗口控制

turtle.bgcolor(*args)

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

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

import turtleturtle.bgcolor("#800080")print(turtle.bgcolor())turtle.done()

turtle.bgpic(picname=None)

参数:picname-- 一个字符串, gif-文件名,"nopic", 或None

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

import turtleprint(turtle.bgpic())turtle.bgpic("landscape.gif")print(turtle.bgpic())turtle.done()

turtle.clear()

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

turtle.clearscreen()

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

turtle.reset()

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

turtle.resetscreen()

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

turtle.screensize(canvwidth=None,canvheight=None,bg=None)

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

import turtleturtle.screensize(800,600)print(turtle.screensize())turtle.done()

turtle.setworldcoordinates(llx,lly,urx,ury)

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

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

import turtleturtle.reset()turtle.setworldcoordinates(-50, -7.5, 50, 7.5)for _ in range(72):turtle.left(10)for _ in range(8):turtle.left(45);turtle.fd(2)turtle.done()

动画控制

turtle.delay(delay=None)

参数:delay-- 正整型数

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

import turtleturtle.delay(5)

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

参数:n-- 非负整型数​​​​​​​delay-- 非负整型数

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

import turtleturtle.speed(1)turtle.tracer(4, 250)dist = 2for i in range(200):turtle.fd(dist)turtle.rt(90)dist += 2turtle.done()

turtle.update()

执行一次 TurtleScreen 刷新。在禁用追踪时使用。

import turtleturtle.update()

使用屏幕事件

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

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

turtle.onkey(fun,key)、turtle.onkeyrelease(fun,key)

参数:fun-- 一个无参数的函数或None​​​​​​​key-- 一个字符串: 键 (例如 "a") 或键标 (例如 "space")

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

import turtleturtle.speed(1)def f():turtle.fd(50)turtle.lt(60)turtle.onkey(f, "Up") # 绑定键盘向上键turtle.listen()turtle.done()

turtle.onkeypress(fun,key=None)

参数:fun-- 一个无参数的函数或None​​​​​​​key-- 一个字符串: 键 (例如 "a") 或键标 (例如 "space")

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

类似:onkey

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

参数:fun-- 一个函数,调用时将传入两个参数表示在画布上点击的坐标。​​​​​​​btn-- 鼠标按钮编号,默认值为 1 (鼠标左键)​​​​​​​add--TrueFalse-- 如为True则将添加一个新绑定,否则将取代先前的绑定

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

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

import turtleturtle.speed(1)turtle.onclick(turtle.goto)turtle.done()

turtle.ontimer(fun,t=0)

参数:fun-- 一个无参数的函数​​​​​​​t-- 一个数值 >= 0

安装一个计时器,在t毫秒后调用fun函数。

import turtleturtle.speed(1)running = Truedef f():if running:turtle.fd(50)turtle.lt(60)turtle.ontimer(f, 250)f() ### makes the turtle march aroundrunning = Falseturtle.done()

turtle.mainloop()、​​​​​​​turtle.done()

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

输入方法

turtle.textinput(title,prompt)

参数:​​​​​​​title-- stringprompt-- string

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

import turtleturtle.speed(1)turtle.textinput("NIM", "Name of first player:")turtle.done()

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

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

import turtleturtle.speed(1)turtle.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)turtle.done()

设置与特殊方法

turtle.mode(mode=None)

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

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

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

turtle.colormode(cmode=None)

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

返回颜色模式或将其设为 1.0 或 255。构成颜色三元组的r,g,b数值必须在 0..cmode范围之内。

turtle.getcanvas()

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

turtle.getshapes()

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

import turtleturtle.speed(1)print(turtle.getshapes())turtle.done()

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

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

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

import turtleturtle.screen.register_shape("turtle.gif")turtle.done()

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

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

import turtleturtle.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))turtle.done()

name为指定的字符串, 为一个 (复合)Shape类对象: 安装相应的复合形状。

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

turtle.turtles()

返回屏幕上的海龟列表。

import turtleturtle.goto(100, 0)for turtle1 in turtle.turtles():print(turtle1.color())turtle1.color("red")turtle.done()

turtle.window_height()

返回海龟窗口的高度。

turtle.window_width()

返回海龟窗口的宽度。

import turtleprint(turtle.window_height())print(turtle.window_width())turtle.done()

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

turtle.bye()

关闭海龟绘图窗口。

turtle.exitonclick()

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

turtle.setup(width=_CFG['width'],height=_CFG['height'],startx=_CFG['leftright'],starty=_CFG['topbottom'])

设置主窗口的大小和位置。默认参数值保存在配置字典中,可通过turtle.cfg文件进行修改。

参数:

width-- 如为一个整型数值,表示大小为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 50%

height-- 如为一个整型数值,表示高度为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 75%

startx-- 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None表示窗口水平居中

starty-- 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None表示窗口垂直居中

turtle.title(titlestring)

参数:titlestring-- 一个字符串,显示为海龟绘图窗口的标题栏文本

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

import turtleturtle.setup (width=200, height=200, startx=0, starty=0)# sets window to 200x200 pixels, in upper left of screenturtle.setup(width=.75, height=0.5, startx=None, starty=None)# sets window to 75% of screen by 50% of screen and centersturtle.done()

公共类

classturtle.RawTurtle(canvas)、​​​​​​​classturtle.RawPen(canvas)

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

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

classturtle.Turtle

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

classturtle.TurtleScreen(cv)

参数:cv-- 一个tkinter.Canvas类对象

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

classturtle.Screen

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

classturtle.ScrolledCanvas(master)

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

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

classturtle.Shape(type_,data)

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

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

addcomponent(poly,fill,outline=None)

参数:poly-- 一个多边形,即由数值对构成的元组​​​​​​​fill-- 一种颜色,将用来填充poly指定的多边形​​​​​​​outline-- 一种颜色,用于多边形的轮廓 (如有指定)

import turtlepoly = ((0,0),(10,-5),(0,10),(-10,-5))s = turtle.Shape("compound")s.addcomponent(poly, "red", "blue")turtle.register_shape("myshape", s)turtle.shape("myshape")turtle.done()

classturtle.Vec2D(x,y)

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

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

a+b矢量加法

a-b矢量减法

a*b内积

k*aa*k与标量相乘

abs(a)a 的绝对值

a.rotate(angle)旋转

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。