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

天生自带绘图板:Python turtle 绘图上手与几个好玩图形

从 Python 标准库 turtle 的基本原理说起,整理了控制海龟行动、画笔属性和窗口设置的核心指令,接着通过正方形、彩色同心圆和五角星三个实例演示了循环、填充与角度计算的用法。在进阶部分简单提了形状定制、螺旋线绘制和鼠标交互,最后汇总了几个新手常见踩坑点,适合用来感受可视化编程的乐趣并巩固基础语法。

黑客帝国发布于 2026/6/30更新于 2026/7/11 浏览

第一次在 Python 里画出会动的东西,大概就是运行 turtle 的那几行代码。它不用安装,直接 import 就能用,像给代码开了一扇看得见的窗户。

turtle 是什么

turtle 说白了就是'海龟绘图'。一只带着画笔的小海龟趴在画布上,你让它往前走、往后转,笔尖就会跟着留下线条。Logo 语言的老玩家对这个概念肯定不陌生,Python 把它放进了标准库里,所以只要有 Python 环境就能开跑。

我喜欢用它来磨手感——改个颜色、调个速度,效果马上出来,特别适合刚学编程的人建立信心。

先让海龟动起来

导入推荐用 import turtle as t,少打几个字,后面示例都这么写。

import turtle as t

下面这些指令够画基础图形了,按'行动''画笔''窗口'分一下。

行动控制

  • t.forward(d) 或 t.fd(d):向前走 d 像素
  • t.backward(d) 或 t.bk(d):向后退 d 像素
  • t.left(angle) / t.right(angle):左转 / 右转角度
  • t.goto(x, y):直接跳到 (x, y) 坐标
  • t.home():回到原点 (0,0),朝向正右
  • t.circle(radius, extent=None):画圆。extent 缺省就是完整的圆;半径正数逆时针,负数顺时针

画笔调整

  • t.penup() / t.pu():抬笔(移动不留痕)
  • t.pendown() / t.pd():落笔(默认状态,留痕)
  • t.pensize(width):画笔粗细
  • t.pencolor(color):画笔颜色,支持颜色名或 RGB 元组
  • t.fillcolor(color):填充颜色
  • t.begin_fill() / t.end_fill():开始 / 结束填充

窗口控制

  • t.setup(w, h, x, y):设定窗口大小和位置
  • t.title('标题'):窗口标题
  • t.bgcolor(color):背景色
  • t.done():保持窗口不关闭,记得写在最后

刚开始别急着背,用到哪个查哪个。关键指令就那几个,画正方形时自然就记住了 fd 和 left。

一个正方形,加点颜色

正方形四个边等长,每次走一段然后左转 90 度,循环四次搞定。

import turtle as t
t.setup(600, 600)
t.title("正方形")
for _ in range(4):
    t.fd(150)
    t.left(90)
t.done()

出来的效果就是一条粗黑线。想好看点,给它上个色:

import turtle as t
t.setup(600, 600)
t.title("彩色正方形")
t.pensize(3)
t.pencolor("blue")
t.fillcolor("pink")
t.begin_fill()
for _ in range(4):
    t.fd(150)
    t.left(90)
t.end_fill()
t.done()

填充要先 begin_fill(),画完再 end_fill(),顺序别搞反。

同心圆:彩色的圈层

circle() 很好用,想画同心圆就反复调用,每次把半径加大一点。这段代码还顺便改了画笔颜色和粗细,让每一圈看起来都不一样。

import turtle as t
t.setup(600, 600)
t.title("同心圆")
t.bgcolor("lightgray")
t.speed(5)
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
for i in range(6):
    t.pencolor(colors[i])
    t.pensize(i + 1)
    t.circle(50 + i * 20)
    t.pu()
    t.goto(0, -(50 + i * 20))
    t.pd()
t.done()

为了让圆都从底部同一个垂直位置开始画,抬笔移到 (0, -radius) 再落笔。speed() 设成 5 就能看清它一笔笔画,设成 0 会瞬间完成,看个人喜好。

五角星:掌握一个关键角度

五角星的画法就一个要记的数字:转弯 144 度。原理是内角 36 度,外角就是 180 - 36 = 144。边长随意,走 5 次。

import turtle as t
t.setup(600, 600)
t.title("五角星")
t.speed(10)
t.pencolor("red")
t.fillcolor("yellow")
t.pensize(2)
t.begin_fill()
for _ in range(5):
    t.fd(200)
    t.left(144)
t.end_fill()
t.hideturtle()
t.done()

最后 hideturtle() 把箭头藏起来,只留干净的图形。

几条实用小技巧

换海龟形象
默认是个箭头,t.shape('turtle') 能变成一只小海龟,t.color('green') 顺便上个色,挺可爱的。

画螺旋线
结合循环和递增的距离,一种很省事的复杂图案:

import turtle as t
t.setup(800, 800)
t.speed(0)
t.pencolor("purple")
for i in range(100):
    t.fd(i * 2)
    t.left(90)
t.done()

鼠标交互
turtle 还能绑定事件,比如点哪里画个圆:

import turtle as t
t.setup(800, 600)
t.title("点哪里画哪里")
def draw_circle(x, y):
    t.pu()
    t.goto(x, y)
    t.pd()
    t.circle(20)
t.onscreenclick(draw_circle, btn=1)
t.done()

运行后鼠标左键单击窗口任意位置,一个小圆就出来了。

踩过的坑

  • 画完窗口闪退:就是忘了最后那句 t.done()。
  • 颜色名写错:比如 pink 打成 pinkk,或者用 RGB 值记得先 t.colormode(255)。
  • 速度慢得着急:t.speed(0) 能直接跳到最后,或者 1-10 之间调。
  • 图形奇怪:多半是转弯角度算错了,正方形是 90 度,五角星是 144,别记混。

turtle 代码不长,错了好排查,这是它最友好的一面。

最后

turtle 算不上真正意义上的'绘图库',它的价值和当年 Logo 一样——让抽象的逻辑变成立刻能看见的图案。画正方形、五角星只是开始,循环、函数、事件这些概念就是在摆弄它的过程里慢慢熟悉的。如果想在 Python 里快速看到点好玩的成果,turtle 绝对值得花一个下午试试。

目录

  1. turtle 是什么
  2. 先让海龟动起来
  3. 一个正方形,加点颜色
  4. 同心圆:彩色的圈层
  5. 五角星:掌握一个关键角度
  6. 几条实用小技巧
  7. 踩过的坑
  8. 最后
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • SSM + Vue 实战:在线投稿系统的搭建与踩坑记录
  • openJiuwen 部署手记:从零搭建 Agent 平台并构建 Rust 导师
  • Stable Diffusion 的工程实现:训练、推理与 LoRA 微调
  • 把 GitHub Copilot 在 VS Code 里用顺手:中文环境下的调校与实战配置
  • 我的 Java 开发环境搭建手记:从 JDK 到 Hello World
  • C++ 面试通关:语法基础、内存管理与类设计
  • 前端面试深度解析:核心概念与代码实践
  • Aurora 8B/10B 配置实战:从物理层到共享逻辑的避坑笔记
  • PX4 Offboard 控制实战:从飞行模式理解到 ROS 轨迹跟踪
  • 移植 3D 封面画廊到 Android TV
  • 浏览器里用微信网页版?这个开源插件帮你绕开限制
  • 链表细节与 Java LinkedList 实战
  • Llama-3.2V-11B-cot 读胸片实测:推理过程、准确率与落地取舍
  • 农业机器人自主导航:五种路径规划算法的实现与权衡
  • 用 DRF 搞定企业 API:从视图到监控的实战经验
  • 用 Docker 跑 MySQL、Redis 及编译 C++ 环境,顺便管管资源
  • 从零搭建在线投稿系统:SSM + Vue 实战笔记
  • MCP AI Copilot 运维实践:从智能告警到故障自愈的量化复盘
  • 清理满屏 import,我试过的几个实用方法
  • Dify + Skill 本地部署实战:构建企业级 AI Agent 完整指南

相关免费在线工具

  • 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

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online