第8天-Python趣味绘图:用Turtle库开启绘画编程之旅

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()点击窗口关闭程序

六、常见问题解决

  1. 窗口闪退问题

    screen.mainloop()  # 在代码最后添加主循环

  2. 调整绘制速度

    pen.speed(0)  # 最快速度(无动画)

  3. 精确坐标控制

    pen.goto(100, 200)  # 移动到绝对坐标
    pen.setheading(90)   # 设置绝对角度(0-东,90-北)

  4. 保存作品为图片

    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库,您可以在学习编程的同时创作出令人惊叹的视觉作品。立即运行示例代码,开启您的图形编程创意之旅吧!欢迎在评论区分享您的绘画作品~ 🐢✨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值