跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 绘图库 Turtle 基础教程:坐标、画笔与实例

Python Turtle 绘图库的基础知识,包括画布设置、坐标系原理、画笔控制函数及运动指令。内容涵盖绝对坐标与相对坐标的区别、颜色模式切换、线条粗细与颜色设置,以及如何使用循环绘制正方形、爱心等经典图形。文章提供了完整的代码示例,包含速度优化、填充颜色及常见问题排查指南,旨在帮助读者从零开始掌握图形编程技巧。

暖阳发布于 2025/2/6更新于 2026/10/23102 浏览
Python 绘图库 Turtle 基础教程:坐标、画笔与实例

Python 绘图库 Turtle 基础教程

Turtle(海龟)是 Python 语言中一个非常流行的绘制图像的函数库,常用于编程入门教学和图形化设计。它通过控制一只虚拟的'海龟'在画布上移动来绘制图形,非常适合初学者理解坐标系、循环和逻辑控制。

1. 环境准备与导入

使用 Turtle 之前,需要确保已安装 Python 环境(通常自带),并在代码开头导入库:

import turtle

2. 画布设置

在开始绘图前,可以设置画布窗口的大小、位置和起始点。

2.1 设置窗口

使用 turtle.setup(width, height, startx, starty) 函数。

  • width:窗口宽度(像素)。
  • height:窗口高度(像素)。
  • startx:窗口左上角距离屏幕左边缘的 X 坐标(可选,默认为屏幕中心)。
  • starty:窗口左上角距离屏幕上边缘的 Y 坐标(可选)。

示例:

turtle.setup(800, 600, 100, 100)

2.2 颜色模式

默认情况下,Turtle 使用 RGB 整数模式(0-255)。可以通过 turtle.colormode(mode) 切换。

  • mode=1.0:RGB 小数模式(0.0-1.0)。
  • mode=255:RGB 整数模式(0-255)。
turtle.colormode(255)  # 设置为整数模式

3. 坐标系与方向

Turtle 绘图涉及两种主要的坐标概念和角度概念。

3.1 绝对坐标

绝对坐标基于画布的中心点 (0, 0)。X 轴向右为正,Y 轴向上为正。

  • turtle.goto(x, y):将海龟移动到指定的绝对坐标 (x, y)。
  • turtle.setpos(x, y):等同于 goto。

3.2 相对坐标(海龟坐标)

以海龟当前所在位置为原点,根据海龟当前的朝向进行移动。

  • turtle.fd(distance) / turtle.forward(distance):沿当前方向前进。
  • turtle.bk(distance) / turtle.backward(distance):沿当前方向后退。
  • distance 可以为负数,表示反向移动。

3.3 角度控制

  • 绝对角度:turtle.seth(angle) 或 turtle.setheading(angle)。设置海龟的朝向为绝对角度(0 度指向正右方,逆时针增加)。
  • 相对角度:turtle.left(angle) 或 。相对于当前朝向旋转指定角度。
turtle.right(angle)

4. 画笔控制

画笔的状态决定了是否留下痕迹以及痕迹的样式。

4.1 抬起与落下

  • turtle.penup() / turtle.pu():抬起画笔,移动时不留下痕迹。
  • turtle.pendown() / turtle.pd():落下画笔,移动时留下痕迹。

4.2 画笔属性

  • turtle.pensize(width) / turtle.width(width):设置画笔线条的粗细(像素)。
  • turtle.pencolor(color):设置画笔颜色。
    • 字符串:如 "red", "green"。
    • 元组/列表:如 (0, 128, 255) 或 [0.5, 0.5, 0.5]。
  • turtle.fillcolor(color):设置填充颜色。

5. 运动与形状绘制

5.1 圆形与弧线

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

  • radius:半径。正值向左画圆,负值向右画圆。
  • extent:绘制的弧度角度。默认为 360 度(整圆)。
  • steps:如果提供,将圆弧近似为多边形边数。

5.2 填充形状

使用 begin_fill() 和 end_fill() 包裹绘图路径,可填充封闭区域。

turtle.begin_fill()
# 绘制路径...
turtle.end_fill()

6. 完整实例演示

6.1 绘制正方形

这是一个基础的几何图形练习,展示循环和角度控制。

import turtle

turtle.speed(3)
turtle.pensize(2)
turtle.pencolor("blue")

for i in range(4):
    turtle.forward(100)
    turtle.right(90)

turtle.done()

6.2 绘制爱心

利用曲线组合绘制经典的爱心形状。

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

6.3 绘制文字祝福

结合画笔控制和路径规划,绘制简单的汉字或英文。

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

7. 性能与优化

  • 速度控制:turtle.speed(speed)。范围 0-10,0 为最快(无动画),1 最慢,其他为中间速度。
  • 隐藏海龟:turtle.hideturtle() 可在绘图完成后隐藏箭头图标,使画面更整洁。
  • 刷新机制:绘图过程中若需立即显示,可使用 turtle.update() 配合 turtle.tracer(False) 关闭自动刷新以提高复杂图形的渲染效率。

8. 常见问题排查

  1. 窗口未弹出:检查是否调用了 turtle.done() 或 turtle.mainloop(),否则程序执行完即退出。
  2. 颜色无效:确认 colormode 设置是否正确,以及颜色值是否在有效范围内。
  3. 图形重叠:使用 penup() 移动海龟到下一个起点,避免绘制不必要的连接线。
  4. 中文乱码:Turtle 默认不支持中文显示,如需显示中文,需配置字体或使用 write() 方法并指定字体参数。

9. 总结

Turtle 库是学习 Python 面向对象编程、循环结构和算法可视化的绝佳工具。通过掌握坐标系统、画笔控制和运动指令,你可以绘制从简单几何图形到复杂艺术图案的各种内容。在实际开发中,建议先理清绘图逻辑,再编写代码,并注意清理无关的社区推广信息,保持代码的纯净与高效。

目录

  1. Python 绘图库 Turtle 基础教程
  2. 1. 环境准备与导入
  3. 2. 画布设置
  4. 2.1 设置窗口
  5. 2.2 颜色模式
  6. 3. 坐标系与方向
  7. 3.1 绝对坐标
  8. 3.2 相对坐标(海龟坐标)
  9. 3.3 角度控制
  10. 4. 画笔控制
  11. 4.1 抬起与落下
  12. 4.2 画笔属性
  13. 5. 运动与形状绘制
  14. 5.1 圆形与弧线
  15. 5.2 填充形状
  16. 绘制路径...
  17. 6. 完整实例演示
  18. 6.1 绘制正方形
  19. 6.2 绘制爱心
  20. 调整位置
  21. 6.3 绘制文字祝福
  22. 模拟绘制“生日快乐”的部分笔画逻辑
  23. 注意:实际汉字绘制通常需要更复杂的轨迹规划
  24. 此处演示基本移动和落笔
  25. 隐藏光标
  26. turtle.hideturtle()
  27. 7. 性能与优化
  28. 8. 常见问题排查
  29. 9. 总结

更多推荐文章

查看全部
  • 大语言模型微调指南:LoRA 原理与实践代码
  • 深度解析 OpenVR、OpenXR、SteamVR 与厂商 SDK 的核心差异
  • Python 入门实战:从 Hello World 到变量使用详解
  • 基于 BERT+Seq2Seq 架构的智能对话系统构建指南
  • RabbitMQ 核心工作模式详解与 Java 实战
  • AC-MPC:微分 MPC 赋能强化学习,实现高速无人机竞速
  • 论文查重前必备的 5 款 AIGC 检测工具推荐
  • SkyWalking 与 Spring Cloud Alibaba 全链路追踪实战
  • 网络安全入门核心知识点与技能体系梳理
  • OpenClaw 多飞书机器人接入与多 Agent 团队协作实战
  • Java JVM 调优的核心路线与实施步骤
  • Python 开发常用库与框架资源指南
  • 插件式开发实战:C++ 与 C# 下的软件解耦方案
  • C++ 笔试刷题 Day 11:水果礼包、股票买卖与字符串倒置
  • Java Lambda 与匿名内部类为何不能修改外部变量?final 机制解析
  • 使用基础模型自动化寻找人工生命 - MIT&OpenAI&Sakana AI
  • 大数据视角下时序数据库选型:Apache IoTDB 核心优势解析
  • Stable Diffusion v1.5 Archive 跨平台效果一致性保障与复现验证
  • 开源分享:AI Agent Skills 资源合集,一键安装 Cursor/Claude Code/Copilot 技能包
  • Vue Beauty UI 组件库核心功能梳理

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online