Python 绘图库 Turtle 基础教程
Turtle(海龟)是 Python 语言中一个非常流行的绘制图像的函数库,常用于编程入门教学和图形化设计。它通过控制一只虚拟的'海龟'在画布上移动来绘制图形,非常适合初学者理解坐标系、循环和逻辑控制。
本文详细介绍了 Python Turtle 绘图库的基础知识,包括画布设置、坐标系原理、画笔控制函数及运动指令。内容涵盖绝对坐标与相对坐标的区别、颜色模式切换、线条粗细与颜色设置,以及如何使用循环绘制正方形、爱心等经典图形。文章提供了完整的代码示例,包含速度优化、填充颜色及常见问题排查指南,旨在帮助读者从零开始掌握图形编程技巧。

Turtle(海龟)是 Python 语言中一个非常流行的绘制图像的函数库,常用于编程入门教学和图形化设计。它通过控制一只虚拟的'海龟'在画布上移动来绘制图形,非常适合初学者理解坐标系、循环和逻辑控制。
使用 Turtle 之前,需要确保已安装 Python 环境(通常自带),并在代码开头导入库:
import turtle
在开始绘图前,可以设置画布窗口的大小、位置和起始点。
使用 turtle.setup(width, height, startx, starty) 函数。
width:窗口宽度(像素)。height:窗口高度(像素)。startx:窗口左上角距离屏幕左边缘的 X 坐标(可选,默认为屏幕中心)。starty:窗口左上角距离屏幕上边缘的 Y 坐标(可选)。示例:
turtle.setup(800, 600, 100, 100)
默认情况下,Turtle 使用 RGB 整数模式(0-255)。可以通过 turtle.colormode(mode) 切换。
mode=1.0:RGB 小数模式(0.0-1.0)。mode=255:RGB 整数模式(0-255)。turtle.colormode(255) # 设置为整数模式
Turtle 绘图涉及两种主要的坐标概念和角度概念。
绝对坐标基于画布的中心点 (0, 0)。X 轴向右为正,Y 轴向上为正。
turtle.goto(x, y):将海龟移动到指定的绝对坐标 (x, y)。turtle.setpos(x, y):等同于 goto。以海龟当前所在位置为原点,根据海龟当前的朝向进行移动。
turtle.fd(distance) / turtle.forward(distance):沿当前方向前进。turtle.bk(distance) / turtle.backward(distance):沿当前方向后退。distance 可以为负数,表示反向移动。turtle.seth(angle) 或 turtle.setheading(angle)。设置海龟的朝向为绝对角度(0 度指向正右方,逆时针增加)。turtle.left(angle) 或 turtle.right(angle)。相对于当前朝向旋转指定角度。画笔的状态决定了是否留下痕迹以及痕迹的样式。
turtle.penup() / turtle.pu():抬起画笔,移动时不留下痕迹。turtle.pendown() / turtle.pd():落下画笔,移动时留下痕迹。turtle.pensize(width) / turtle.width(width):设置画笔线条的粗细(像素)。turtle.pencolor(color):设置画笔颜色。
(0, 128, 255) 或 [0.5, 0.5, 0.5]。turtle.fillcolor(color):设置填充颜色。turtle.circle(radius, extent=None, steps=None)
radius:半径。正值向左画圆,负值向右画圆。extent:绘制的弧度角度。默认为 360 度(整圆)。steps:如果提供,将圆弧近似为多边形边数。使用 begin_fill() 和 end_fill() 包裹绘图路径,可填充封闭区域。
turtle.begin_fill()
# 绘制路径...
turtle.end_fill()
这是一个基础的几何图形练习,展示循环和角度控制。
import turtle
turtle.speed(3)
turtle.pensize(2)
turtle.pencolor("blue")
for i in range(4):
turtle.forward(100)
turtle.right(90)
turtle.done()
利用曲线组合绘制经典的爱心形状。
import turtle
def curve():
for i in range(200):
turtle.right(1)
turtle.forward(1)
turtle.color('pink')
turtle.title("Love")
turtle.bgcolor('white')
# 调整位置
turtle.penup()
turtle.goto(0, -100)
turtle.pendown()
turtle.begin_fill()
turtle.left(140)
turtle.forward(111.65)
curve()
turtle.left(120)
curve()
turtle.forward(111.65)
turtle.end_fill()
turtle.hideturtle()
turtle.done()
结合画笔控制和路径规划,绘制简单的汉字或英文。
import turtle
def move(angle, length):
turtle.penup()
turtle.seth(angle)
turtle.fd(length)
turtle.setup(1300, 400, 100, 100)
turtle.speed(5)
turtle.pensize(10)
turtle.pencolor("green")
# 模拟绘制'生日快乐'的部分笔画逻辑
# 注意:实际汉字绘制通常需要更复杂的轨迹规划
# 此处演示基本移动和落笔
move(0, 30)
turtle.pendown()
turtle.fd(100)
turtle.penup()
move(0, 50)
# 隐藏光标
# turtle.hideturtle()
turtle.done()
turtle.speed(speed)。范围 0-10,0 为最快(无动画),1 最慢,其他为中间速度。turtle.hideturtle() 可在绘图完成后隐藏箭头图标,使画面更整洁。turtle.update() 配合 turtle.tracer(False) 关闭自动刷新以提高复杂图形的渲染效率。turtle.done() 或 turtle.mainloop(),否则程序执行完即退出。colormode 设置是否正确,以及颜色值是否在有效范围内。penup() 移动海龟到下一个起点,避免绘制不必要的连接线。write() 方法并指定字体参数。Turtle 库是学习 Python 面向对象编程、循环结构和算法可视化的绝佳工具。通过掌握坐标系统、画笔控制和运动指令,你可以绘制从简单几何图形到复杂艺术图案的各种内容。在实际开发中,建议先理清绘图逻辑,再编写代码,并注意清理无关的社区推广信息,保持代码的纯净与高效。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online