Python 库手册:turtle 简易图形绘图模块

turtle 是 Python 标准库中一个用于绘图和教学的图形模块,通过模拟“海龟”(Turtle)在画布上的移动来绘制各种几何图形。它尤其适合编程初学者学习基本的编程思维、函数调用、坐标系统和图形绘制等。

常见应用场景:

(1)编程教学:图形化地引导初学者理解程序流程。

(2)图形绘制:创建几何图形、分形、螺旋线等图案。

(3)动画演示:通过移动和绘图指令控制动态变化。

(4)交互设计:响应鼠标点击、键盘输入,制作小游戏。

  ◆  ◆

核心概念

1、画布坐标系

中心点为 (0, 0),向右为 x 轴正方向,向上为 y 轴正方向。

2、海龟

一个可移动的绘图实体,类似画笔,支持移动、旋转、控制颜色与粗细。

3、状态与动作

海龟有位置、方向、画笔状态(提笔/落笔)等,可通过方法精确控制。

4、填充与图层

支持封闭区域的颜色填充,支持图层叠加和重绘。

5、事件驱动

支持绑定鼠标、键盘事件,使程序具备交互性。

6、绘图流程

海龟的绘图逻辑非常接近现实中“拿笔在纸上画图”的思维方式,因此易于理解。

  ◆  ◆

应用举例

例 1:绘制正方形

import turtle
t = turtle.Turtle()for _ in range(4):    t.forward(100)    t.left(90)
turtle.done()

例 2:绘制彩色螺旋

import turtleimport colorsys
t = turtle.Turtle()t.speed(0)turtle.bgcolor("black")
hue = 0for i in range(200):    color = colorsys.hsv_to_rgb(hue, 1, 1)    t.pencolor(color)    t.forward(i * 2)    t.left(59)    hue += 0.005
turtle.done()

例 3:响应鼠标点击

import turtle
def draw_circle(x, y):    t.penup()    t.goto(x, y)    t.pendown()    t.circle(30)
t = turtle.Turtle()t.speed(0)
screen = turtle.Screen()screen.onscreenclick(draw_circle)screen.mainloop()

例 4:绘制五角星

import hashlib
def hash_file(path):    h = hashlib.sha256()    with open(path, 'rb') as f:        for chunk in iter(lambda: f.read(4096), b''):            h.update(chunk)    return h.hexdigest()
print(hash_file("example.txt"))

说明:

五角星的每个角是 36°,但由于 turtle 是顺时针旋转,所以我们转的是 180 - 36 = 144°。

例 5:绘制心形图案并添加文字

import turtle
t = turtle.Turtle()t.color('red')t.begin_fill()
t.left(140)t.forward(180)t.circle(-90, 200)t.left(120)t.circle(-90, 200)t.forward(180)
t.end_fill()
t.penup()t.goto(0, -20)t.color('cyan')t.write("Love", align="center", font=("Arial", 20, "bold"))
turtle.done()

提示:

此例利用曲线绘制左右对称的心形,并在中间写入文字,适合节日贺卡或图像创作。

  ◆  ◆

常用函数速览

begin_fill()

开始记录填充区域。之后的绘图路径会被用于填充颜色,直到调用 end_fill()。

参数:无

返回:None

bgcolor(color)

设置画布背景颜色。

参数:color 为颜色名或 RGB 值

返回:None

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

以当前方向的左侧为圆心,绘制一个圆或弧形。

参数:

radius:半径,正数表示左侧为圆心,负数表示右侧

extent(可选):弧度角度,默认 360

steps(可选):用多少条直线逼近圆弧

返回:None

clear()

清除当前 turtle 绘制的所有图形,不重置位置和方向。

参数:无

返回:None

color(*args)

设置画笔颜色和填充颜色。

参数:

一个参数时,设置画笔和填充颜色为相同

两个参数时,第一个为画笔颜色,第二个为填充颜色

返回:当前颜色设置(字符串或元组)

delay(delay_ms)

设置动画延迟,单位为毫秒,用于控制绘图速度(间接影响)。

参数:delay_ms 为整数,单位为毫秒

返回:None

done()

表示 turtle 绘图已完成,防止窗口立即关闭。

参数:无

返回:None

end_fill()

结束填充区域,并用当前填充颜色填充记录的区域。

参数:无

返回:None

fillcolor(color)

设置填充颜色。

参数:color 为颜色名(如 'blue')或 RGB 元组

返回:None

forward(distance)

沿当前方向前进指定的距离。

参数:

distance:前进距离(正数)

返回:None

别名:fd(distance)

getcanvas()

返回一个 tkinter.Canvas 对象,它是 turtle 所使用的底层画布。通过该对象,可以直接使用 tkinter 的方法对绘图窗口进行更精细的控制,比如添加文本、绑定事件、操作图层等。

参数:无

返回:返回 tkinter.Canvas 对象,即,turtle 所绘制的实际画布

说明:

这个函数适用于需要混合使用 turtle 和 tkinter 的高级用户。

goto(x, y)

将 turtle 移动到指定坐标位置。

参数:

x:目标 x 坐标

y:目标 y 坐标

返回:None

hideturtle()

隐藏 turtle 指针(通常是箭头形状),不影响绘图。

参数:无

返回:None

别名:ht()

left(angle)

左转指定角度,改变前进方向。

参数:

angle:旋转角度,单位为度

返回:None

别名: lt(angle)

mainloop()

启动 turtle 图形界面的主事件循环,让绘图窗口保持开启状态,等待用户操作或响应事件(如点击、拖拽、键盘输入等)。这是所有 turtle 程序的结尾部分,确保图形窗口不会一闪而过。

在某些环境中(如 IDLE 或交互式 shell)可以省略不写,但在独立运行的 .py 文件中,通常需要明确调用 mainloop() 才能让窗口保持打开。

参数:无

返回:None

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

绑定鼠标点击事件,当海龟画布被点击时调用指定函数。

参数:fun 为回调函数;btn 为鼠标按钮(1=左键);add 表示是否新增绑定

返回:None

ontimer(function, t=0)

在指定毫秒后触发一次函数调用,用于定时动画或逻辑调度。

参数:function 为回调函数;t 为延迟毫秒数

返回:None

pencolor(color)

设置画笔颜色。

参数:

color:颜色名称或 RGB 元组

返回:当前画笔颜色

pendown()

落下画笔,移动时会绘制轨迹。

参数:无

返回:None

别名:pd()

pensize(width)

设置绘图线条的粗细。

参数:

width:线条宽度,单位为像素

返回:当前线宽

别名:width(width)

penup()

抬起画笔,移动时不会绘制轨迹。

参数:无

返回:None

别名:pu()

reset( )

重置画布和海龟状态,等效于清空并回到初始状态。

参数:无

返回:None

right(angle)

右转指定角度,改变前进方向。

参数:

angle:旋转角度,单位为度

返回:None

别名:rt(angle)

setheading(angle)

设置海龟朝向(0=右,90=上,180=左,270=下)。

参数:angle 为角度值

返回:None

别名:seth(angle)

shape(name)

设置海龟的图标形状。

参数:name 可为 'turtle'、'arrow'、'circle' 等

返回:None

showturtle( )

显示海龟图标。

参数:无

返回:None

别名:st()

speed(n)

设置绘图速度(0=最快,1~10 越大越快)。

参数:n 为整数或字符串

返回:None

stamp( )

在当前位置盖下海龟形状的印章。

参数:无

返回:图章 ID(int)

tracer(n=None, delay=None)

设置绘图刷新频率(默认自动刷新)。

参数:n 控制多少步后刷新一次;delay 为刷新间隔(ms)

返回:None

update( )

手动刷新屏幕,仅当 tracer(0) 时使用。

参数:无

返回:None

write(text, move=False, align='left', font=('Arial', 8, 'normal'))

在当前位置写文字。

参数:text 为字符串;move 为是否移动海龟;align 为对齐方式;font 为字体设置

返回:None

  ◆  ◆

补充说明

1、运行环境

turtle 需要在支持 GUI 的环境中运行。部分在线平台或命令行环境无法显示图形窗口。

2、绘图延迟

可以通过 speed() 或 tracer() 调整绘图速度。

3、mainloop() 与 done()

两者皆可保持窗口开启,但 mainloop() 更适合绑定事件的程序。

4、对象 vs 函数式调用

turtle 支持两种风格——使用 Turtle() 类创建对象,或直接使用模块级函数。

5、图形导出

可通过 getcanvas().postscript() 等方法导出绘图内容为图像文件。

6、多 turtle 同屏

可创建多个 Turtle 实例,协同绘图或做动画。

图片

“点赞有美意,赞赏是鼓励”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值