Turtle(海龟绘图)是Python内置的图形绘制库,通过控制屏幕上的"小海龟"移动轨迹,可轻松实现各种几何图形与艺术图案的创作。本文从零开始手把手教学,带您体验编程绘画的奇妙乐趣!
一、环境准备
# 无需额外安装!Python标准库自带Turtle模块
import turtle
二、基础绘图操作
1. 初始化画布
# 创建画布并设置基本参数
screen = turtle.Screen()
screen.title("Python绘图实验室")
screen.bgcolor("lightblue") # 设置背景色
screen.setup(width=800, height=600) # 设置画布尺寸
# 创建海龟画笔
pen = turtle.Turtle()
pen.shape("turtle") # 箭头模式可改为"arrow"
pen.color("darkgreen") # 设置画笔颜色
pen.pensize(3) # 设置画笔粗细
2. 基本移动指令
方法 | 功能说明 | 示例参数 |
---|---|---|
forward(d) | 前进d像素 | pen.fd(100) |
backward(d) | 后退d像素 | pen.bk(50) |
right(angle) | 右转角度 | pen.rt(90) |
left(angle) | 左转角度 | pen.lt(45) |
penup() | 抬起画笔(移动不画线) | pen.penup() |
pendown() | 落下画笔 | pen.pendown() |
speed(n) | 设置移动速度(0-10) | pen.speed(6) |
三、经典图形绘制案例
案例1:绘制彩色正方形
colors = ["red", "blue", "green", "purple"]
for i in range(4):
pen.color(colors[i])
pen.fd(100)
pen.rt(90)
pen.hideturtle() # 隐藏海龟图标
案例2:绘制螺旋星星
pen.speed(10)
for i in range(50):
pen.fd(i * 5)
pen.rt(144) # 五角星转角
pen.color( (i%10/10, i%20/20, 0.5) ) # RGB渐变
案例3:递归绘制分形树
def draw_tree(length):
if length < 10:
return
pen.pensize(length/10)
pen.fd(length)
pen.lt(30)
draw_tree(length*0.7)
pen.rt(60)
draw_tree(length*0.7)
pen.lt(30)
pen.bk(length)
pen.lt(90) # 树向上生长
pen.penup()
pen.goto(0, -200)
pen.pendown()
draw_tree(100)
四、高级技巧:制作动画
1. 旋转太阳系
import turtle
# 创建多个海龟对象
sun = turtle.Turtle()
earth = turtle.Turtle()
moon = turtle.Turtle()
# 初始化天体样式
sun.shape("circle")
sun.color("orange")
sun.shapesize(2)
earth.shape("circle")
earth.color("blue")
earth.penup()
earth.goto(150, 0)
earth.pendown()
moon.color("gray")
moon.penup()
moon.goto(180, 0)
moon.pendown()
# 动画循环
while True:
earth.rt(1) # 地球公转
moon.circle(30) # 月球绕地球
sun.lt(0.5) # 太阳自转
2. 交互式绘图(点击画花)
def draw_flower(x, y):
pen.penup()
pen.goto(x, y)
pen.pendown()
for _ in range(6):
pen.circle(20)
pen.rt(60)
pen.circle(40, steps=5) # 绘制五边形花蕊
screen.onclick(draw_flower) # 绑定点击事件
五、实用参数速查表
功能 | 代码示例 | 说明 |
---|---|---|
设置画笔颜色 | pen.pencolor("gold") | 支持颜色名称/十六进制/RGB元组 |
填充颜色 | pen.fillcolor("#FF3399") | 需配合begin_fill()/end_fill() |
绘制圆形 | pen.circle(50, steps=6) | 第二参数可指定边数绘制正多边形 |
清空画布 | pen.clear() | 保留海龟位置 |
重置画布 | pen.reset() | 完全重置所有设置 |
设置窗口关闭 | screen.exitonclick() | 点击窗口关闭程序 |
六、常见问题解决
-
窗口闪退问题
screen.mainloop() # 在代码最后添加主循环
-
调整绘制速度
pen.speed(0) # 最快速度(无动画)
-
精确坐标控制
pen.goto(100, 200) # 移动到绝对坐标 pen.setheading(90) # 设置绝对角度(0-东,90-北)
-
保存作品为图片
canvas = screen.getcanvas() canvas.postscript(file="drawing.eps") # 保存矢量图
七、创意扩展方向
-
🎮 制作贪吃蛇小游戏
-
🎨 生成随机艺术图案
-
📐 可视化数学函数曲线
-
🧩 开发几何绘图教学工具
-
🖼️ 实现签名设计器
完整代码示例:国旗绘制
import turtle
# 初始化画笔
screen = turtle.Screen()
screen.title("中国国旗")
pen = turtle.Turtle()
pen.speed(10)
pen.hideturtle()
# 绘制矩形函数
def draw_rectangle(color, width, height):
pen.begin_fill()
pen.color(color)
for _ in range(2):
pen.fd(width)
pen.rt(90)
pen.fd(height)
pen.rt(90)
pen.end_fill()
# 绘制五角星函数
def draw_star(x, y, size, angle):
pen.penup()
pen.goto(x, y)
pen.setheading(angle)
pen.pendown()
pen.begin_fill()
pen.color("yellow")
for _ in range(5):
pen.fd(size)
pen.rt(144)
pen.end_fill()
# 主程序
if __name__ == "__main__":
# 设置旗面尺寸
flag_width = 400
flag_height = 300
# 绘制红色旗面
pen.penup()
pen.goto(-flag_width/2, flag_height/2)
pen.pendown()
draw_rectangle("red", flag_width, flag_height)
# 计算五角星参数(标准比例)
big_star_size = 90 # 大星尺寸
small_star_size = 30 # 小星尺寸
big_star_x = -flag_width/2 + 40 # 大星X坐标
big_star_y = flag_height/2 - 40 # 大星Y坐标
# 绘制大五角星
draw_star(big_star_x, big_star_y, big_star_size, 0)
# 四个小五角星参数(坐标和角度)
small_stars = [
(big_star_x + 70, big_star_y - 20, 325), # 第1颗小星
(big_star_x + 80, big_star_y - 50, 30), # 第2颗小星
(big_star_x + 80, big_star_y - 90, 5), # 第3颗小星
(big_star_x + 60, big_star_y - 110, 350) # 第4颗小星
]
# 绘制四颗小五角星
for x, y, angle in small_stars:
draw_star(x, y, small_star_size, angle)
# 完成绘制
turtle.done()
通过Turtle库,您可以在学习编程的同时创作出令人惊叹的视觉作品。立即运行示例代码,开启您的图形编程创意之旅吧!欢迎在评论区分享您的绘画作品~ 🐢✨