Python turtle库入门:零基础也能轻松绘制趣味图形

对于刚接触Python的新手来说,编程的乐趣往往藏在“看得见的成果”里。而turtle库,正是Python自带的一款“可视化绘图工具”——它就像给你一支可以被代码操控的画笔,通过简单的指令,就能让画笔在屏幕上自动绘制出线条、图形甚至复杂的图案。今天,我们就来全面解锁turtle库的用法,从基础操作到实战案例,让你快速感受编程绘图的快乐。

一、turtle库是什么?核心原理很简单

turtle库的灵感源自“海龟绘图”(Turtle Graphics),最早是Logo语言的核心功能。它的核心逻辑特别直观:

你可以把屏幕想象成一张白纸,一只带着画笔的“小海龟”在纸上爬行。你通过代码控制小海龟的行动——前进、后退、转弯,画笔会跟着它的轨迹留下痕迹;同时,你还能控制画笔的颜色、粗细,甚至抬起画笔(不留痕迹)、放下画笔(留痕迹)。

关键优势:

  • Python自带库,无需额外安装,导入即可使用;

  • 语法简单易懂,指令贴近自然语言(如forward、left、right);

  • 可视化效果即时,能快速看到代码运行结果,成就感拉满。

二、入门第一步:环境准备与基础指令

1. 环境准备:无需安装,直接导入

turtle是Python标准库的一部分,只要你安装了Python环境(3.x版本均可),就可以直接在代码中导入使用,无需pip安装。

基础导入方式:


# 方式1:直接导入整个库
import turtle

# 方式2:导入库并简化名称(推荐,少写代码)
import turtle as t

# 方式3:导入库中所有函数(不推荐,可能与其他函数冲突)
from turtle import *
    

推荐使用方式2(import turtle as t),后续示例均采用这种方式。

2. 核心基础指令:控制小海龟行动

先掌握这些基础指令,就能绘制简单图形了。我们按“行动控制”“画笔控制”“屏幕控制”分类整理:

(1)行动控制:让小海龟动起来
指令功能说明示例
t.forward(distance) 或 t.fd(distance)向前移动指定距离(单位:像素)t.fd(100) # 向前移动100像素
t.backward(distance) 或 t.bk(distance)向后移动指定距离t.bk(50) # 向后移动50像素
t.left(angle)向左转指定角度(单位:度)t.left(90) # 向左转90度(直角)
t.right(angle)向右转指定角度t.right(45) # 向右转45度
t.goto(x, y)直接移动到坐标(x, y)的位置t.goto(100, 100) # 移动到(100,100)点
t.home()回到初始位置(0,0),朝向正右方t.home() # 回归原点
t.circle(radius, extent=None)绘制圆形:radius是半径(正为顺时针,负为逆时针),extent是绘制角度(默认360度,即完整圆形)t.circle(50) # 绘制半径50的完整圆形
(2)画笔控制:调整线条样式
指令功能说明示例
t.penup() 或 t.pu()抬起画笔,移动时不留痕迹t.pu() # 抬起画笔
t.pendown() 或 t.pd()放下画笔,移动时留痕迹(默认状态)t.pd() # 放下画笔
t.pensize(width) 或 t.width(width)设置画笔宽度t.pensize(5) # 画笔宽度设为5像素
t.pencolor(color)设置画笔颜色(支持颜色名称、RGB值)t.pencolor(“red”) 或 t.pencolor(255,0,0)
t.fillcolor(color)设置图形填充颜色t.fillcolor(“yellow”) # 填充色设为黄色
t.begin_fill()开始填充(在绘制图形前调用)t.begin_fill() # 开始填充
t.end_fill()结束填充(在图形绘制完成后调用)t.end_fill() # 结束填充
(3)屏幕控制:调整绘图窗口
指令功能说明示例
t.setup(width, height, x, y)设置窗口大小和位置:width/height是窗口宽高,x/y是窗口左上角相对于屏幕的坐标(默认居中)t.setup(800, 600) # 窗口宽800、高600,居中显示
t.title(title)设置窗口标题t.title(“我的turtle绘图”) # 窗口标题设为“我的turtle绘图”
t.bgcolor(color)设置窗口背景色t.bgcolor(“lightblue”) # 背景色设为浅蓝色
t.done()保持窗口显示(程序结束时调用,否则窗口会一闪而过)t.done() # 停留显示绘图窗口

三、实战案例:从简单图形到趣味图案

掌握了基础指令,我们通过几个案例实操一下,感受turtle的绘图魅力。

案例1:绘制一个简单的正方形

正方形的特点是4条边相等,每个角都是90度。核心逻辑:向前走→左转90度→重复4次。


import turtle as t

# 设置窗口
t.setup(600, 600)
t.title("绘制正方形")

# 绘制正方形
for _ in range(4):  # 重复4次
    t.fd(150)       # 向前走150像素
    t.left(90)      # 向左转90度

# 保持窗口显示
t.done()
    

运行代码后,会出现一个居中的黑色正方形。如果想让它更美观,可以添加颜色和填充:


import turtle as t

t.setup(600, 600)
t.title("彩色填充正方形")

# 设置画笔和填充颜色
t.pensize(3)          # 画笔宽度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()
    

案例2:绘制一个彩色圆形和同心圆

利用t.circle()函数绘制圆形,通过循环绘制多个不同半径的圆形,形成同心圆。


import turtle as t

t.setup(600, 600)
t.title("彩色同心圆")
t.bgcolor("lightgray")  # 背景色灰色,突出圆形
t.speed(5)  # 设置绘图速度(1最慢,10最快,0瞬间完成)

# 定义颜色列表
colors = ["red", "orange", "yellow", "green", "blue", "purple"]

# 绘制6个同心圆
for i in range(6):
    t.pencolor(colors[i])  # 依次使用颜色列表中的颜色
    t.pensize(i+1)         # 画笔宽度逐渐增加
    t.circle(50 + i*20)    # 半径逐渐增加(50,70,90...)
    t.pu()                 # 抬起画笔
    t.goto(0, -(50 + i*20))# 移动到下一个圆的底部起点
    t.pd()                 # 放下画笔

t.done()
    

说明:t.speed()用于控制绘图速度,0是最快的(瞬间完成),1-10速度递增;这里通过循环改变半径、颜色和画笔宽度,让同心圆更有层次感。

案例3:绘制一个五角星(进阶)

五角星的绘制需要掌握角度计算:五角星的每个尖角对应的内角是36度,绘制时每次转弯的角度是144度(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)       # 边长200像素
    t.left(144)     # 左转144度
t.end_fill()

# 让小海龟隐藏,更美观
t.hideturtle()

t.done()
    

运行后会得到一个经典的红黄配色五角星,hideturtle()函数可以隐藏小海龟的图标,让图形更简洁。

四、进阶技巧:让绘图更灵活

1. 自定义小海龟形状

默认的小海龟是箭头形状,你可以通过t.shape()函数修改,支持的内置形状有:“arrow”(箭头)、“turtle”(海龟)、“circle”(圆形)、“square”(正方形)、“triangle”(三角形)、“classic”(经典箭头)。


import turtle as t

t.shape("turtle")  # 把小海龟改成海龟形状
t.color("green")   # 小海龟颜色设为绿色
t.fd(100)
t.done()
    

2. 循环与函数:绘制重复图案

对于复杂图案(如花朵、螺旋线),可以结合循环和函数来简化代码。比如绘制一个螺旋线:


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)   # 每次左转90度

t.done()
    

3. 事件绑定:用鼠标/键盘控制绘图

turtle支持绑定鼠标或键盘事件,实现交互式绘图。比如点击鼠标在对应位置画圆:


import turtle as t

t.setup(800, 600)
t.title("鼠标点击绘图")

# 定义点击事件函数:在点击位置画一个半径20的圆
def draw_circle(x, y):
    t.pu()
    t.goto(x, y)
    t.pd()
    t.circle(20)

# 绑定鼠标左键点击事件(点击时调用draw_circle函数,传入点击位置的x,y坐标)
t.onscreenclick(draw_circle, btn=1)

t.done()
    

运行后,点击屏幕任意位置,就会在该位置绘制一个小圆。

五、常见问题与注意事项

  1. 窗口一闪而过:忘记在代码最后添加t.done(),添加后即可保持窗口显示;

  2. 绘图速度太慢:使用t.speed(0)设置为最快速度(瞬间完成),或调整speed(1-10)的数值;

  3. 颜色不生效:注意颜色名称的正确性(如“pink”而非“fenhong”),或使用RGB值时需配合t.colormode(255)开启255色模式;

  4. 图形绘制错误:检查角度和边长的计算,比如正方形的转弯角度是否为90度,五角星是否为144度;

  5. 代码运行报错:确认turtle库已正确导入,且指令拼写正确(如t.fd()而非t.forwardd())。

六、总结:turtle库的学习价值

turtle库虽然简单,但对于Python新手来说,是入门编程的绝佳工具:

  • 直观的可视化效果,能快速激发学习兴趣;

  • 通过控制小海龟的行动,理解代码的逻辑流程(顺序、循环、条件);

  • 从简单图形到复杂图案,逐步培养编程思维和创造力。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐