Swampy 是 Python 编程初学者非常经典的一个图形库,由著名编程教育家 Allen B. Downey(《Think Python》作者)开发。
它基于 Turtle 图形库进行了封装,旨在让初学者更容易地学习编程概念(如函数、循环、递归、类等),同时绘制出有趣的图形。
📌 核心特点
- 简化 Turtle 接口:Swampy 将原始的 Turtle 操作简化为更直观的命令。
- 面向对象设计:每个绘图对象是一个类(如
World,Canvas,Turtle),便于理解 OOP。 - 专为教学设计:配套 Allen Downey 的《Think Python》教材,适合零基础入门。
- 支持多种图形:除了线条和形状,还支持绘制图像、动画等。
📥 安装 Swampy
⚠️ 注意:Swampy 较老,可能不兼容最新版本的 Python(如 3.10+),建议使用 Python 3.6–3.9 或尝试兼容版本。
pip install swampy
如果安装失败,可以尝试从 GitHub 下载源码安装:
git clone https://github.com/AllenDowney/Swampy.git cd Swampy pip install .
🚀 快速开始示例
基础绘图:画一个正方形
from swampy.TurtleWorld import
# 创建世界和乌龟
world = World()
bob = Turtle()
# 让乌龟前进并左转,画正方形
for _ in range(4):
fd(bob, 100) # fd = forward,前进100步
lt(bob, 90) # lt = left turn,左转90度
# 保持窗口打开
wait_for_user()
使用 Canvas 绘制图像
from swampy.Canvas import # 创建画布 canvas = Canvas(width=400, height=400, bg='white') # 绘制一个红色圆形 canvas.circle([0, 0], 100, fill='red', outline='black') # 绘制一个蓝色矩形 canvas.rectangle([[-100, -100], [100, 100]], fill='blue', outline='green') # 显示画布 canvas.mainloop()
递归绘图:科赫雪花(Koch Snowflake)
from swampy.TurtleWorld import
def koch(t, n):
"""画一个科赫曲线,长度为n"""
if n < 3:
fd(t, n)
return
m = n / 3.0
koch(t, m)
lt(t, 60)
koch(t, m)
rt(t, 120)
koch(t, m)
lt(t, 60)
koch(t, m)
world = World()
bob = Turtle()
bob.delay = 0.01 # 加快速度
# 画一个科赫雪花
for _ in range(3):
koch(bob, 300)
lt(bob, 120)
wait_for_user()
📚 主要模块
| 模块 | 功能 |
|---|---|
TurtleWorld |
基础绘图,适合初学者学习控制流和函数 |
Canvas |
更强大的图形绘制,支持颜色、填充、图像 |
GUI |
创建简单图形用户界面(按钮、文本框等) |
Poker |
扑克牌游戏示例,学习对象和状态管理 |
World |
模拟世界,用于游戏或动画开发 |
💡 学习建议
- 搭配《Think Python》阅读:Swampy 是该书的官方配套库,书中每章都有对应练习。
- 从简单开始:先掌握
fd,lt,rt,bk等基本命令。 - 尝试修改参数:改变颜色、速度、形状,观察效果。
- 探索递归:Swampy 非常适合演示递归图形(如分形树、雪花)。
❓ 常见问题
Q: Swampy 在 Python 3.10+ 上无法安装怎么办?
A: 可以尝试使用 pip install swampy==2.1.0,或改用 turtle 标准库,Swampy 是对 turtle 的封装,功能可替代。
Q: 为什么我的图形窗口打不开?
A: 确保已调用 wait_for_user() 或 mainloop(),否则程序会立即退出。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/477543.html



