Python 绘图魔法:用turtle库开启你的编程艺术之旅

🏠大家好,我是Yui_,目标成为全栈工程师~💬
🍑如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
🚀如有不懂,可以随时向我提问,我会全力讲解~
🔥如果感觉博主的文章还不错的话,希望大家关注、点赞、收藏三连支持一下博主哦~!
🔥你们的支持是我创作的动力!
🧸我相信现在的努力的艰辛,都是为以后的美好最好的见证!
🧸人的心态决定姿态!
💬欢迎讨论:如有疑问或见解,欢迎在评论区留言互动。
👍点赞、收藏与分享:如觉得这篇文章对您有帮助,请点赞、收藏并分享!
🚀分享给更多人:欢迎分享给更多对编程感兴趣的朋友,一起学习!

文章目录

  • 1. `turtle`的常用功能
  • 1.1 基本操作
  • 1.2 设置画笔属性
  • 1.3 设置窗口属性
  • 2. 绘图操作
  • 2.1 正方形绘制
  • 2.2 正多边形绘制
  • 2.3 同心圆的绘制
  • 2.4 填充图形的绘制
  • 2.5 五角星的绘制
  • 2.6 螺旋图案的绘制
  • 3. `turtle`的进阶操作
  • 4. 总结
  • 在python存在一个简单易用的绘图库,它就是
    turtle

    Python 的
    turtle 模块是一种简单易用的绘图库,适合用于绘制图形和动画。它以“海龟”(Turtle)作为绘图工具,模拟一只“海龟”在平面上移动,通过命令控制其运动轨迹来绘制各种图案。


    Turtle 特别适合初学者学习编程逻辑和图形学,因为它的接口直观,操作简单。

    在本篇博客,我会带领着大家学会
    turtle库的使用。

    1. turtle的常用功能

    1.1 基本操作

    方法 描述
    turtle.forward(x) 向前移动 x 像素
    turtle.backward(x) 向后移动 x 像素
    turtle.left(angle) 向左旋转指定角度(单位:度)
    turtle.right(angle) 向右旋转指定角度(单位:度)
    turtle.penup() 提起画笔(移动时不绘制轨迹)
    turtle.pendown() 放下画笔(移动时绘制轨迹)
    turtle.goto(x, y) 移动到坐标 (x, y)
    turtle.speed(speed) 设置绘图速度,范围从 0(最快)到 10
    turtle.hideturtle() 隐藏海龟图标
    turtle.showturtle() 显示海龟图标

    1.2 设置画笔属性

    方法 描述
    turtle.color(color) 设置画笔颜色,支持字符串如 "red" 或 RGB
    turtle.fillcolor(color) 设置填充颜色
    turtle.begin_fill() 开始填充区域
    turtle.end_fill() 结束填充区域
    turtle.pensize(width) 设置画笔宽度

    1.3 设置窗口属性

    方法 描述
    turtle.title(title) 设置窗口标题
    turtle.bgcolor(color) 设置窗口背景颜色
    turtle.setup(width, height) 设置窗口大小
    turtle.reset() 重置画布和海龟状态
    turtle.clearscreen() 清除整个屏幕

    以上的功能,只要用代码敲遍就会完全明白了,下面让我们来看具体的案例吧。

    2. 绘图操作

    要想学会turtle库最好的方式就是直接上手,所以介绍函数时不会浪费过多的时间,只要用这些函数实现完以下简单的图形后,对于turtle的操作也就大概没有问题了。

    2.1 正方形绘制

    要绘制正方形,肯定需要知道正方形的图形,相信大家对于这个肯定是没有问题的,拥有4条相同的边且4个角都为直角。这也就是绘制正方形的关键,因为turtle是模拟一只海龟的的移动,只要让海龟的移动轨迹满足条件就可以了。
    海龟先向前移动x单位的距离,然后向右转再移动x单位的距离,然后在右转移动x单位的距离,最后在右转移动x单位的距离。因为操作涉及了重复,我们可以将其写为循环。

    import turtle #导包
    
    t = turtle.Turtle()#先创建对象
    turtle.title('我是一个正方形哦~')# 为画布添加标题(可不写)
    for _ in range(4):
        t.forward(100) #向前移动100个单位的距离
        t.right(90) #开始向右转90度
        
    turtle.done() #保持画布的存在
    

    让我们来看看效果吧

    可以发现,初始时海龟是咋画布的正中间的,而且海龟的屏幕向右,这点需要记得呢。
    那么是否可以移动海龟,不让海龟从初始(0,0)开始移动。
    当然也是可以的,可以使用turtle.goto(),不过当你使用时,你一定会发现,怎么海龟还是移动过去的,而且还有移动痕迹,这时候就需要我们去把这些痕迹去除了,用到函数turtle.penupturtle.pendown,如果现在我还不想看到那个海龟turtle.hideturtle()这个函数就有作用了。
    同时我们还可以控制速度turtle.speed()
    以下是功能大杂烩的演示:

    import turtle
    
    turtle.title('功能测试')
    
    t = turtle.Turtle()
    t.speed(0) # 设置速度
    
    t.hideturtle() #隐藏海龟
    t.penup() #提起画笔
    t.goto(-300,300) #跳转到指定坐标
    t.pendown() #放放下画笔
    t.speed(1) #重新设置速度
    for _ in range(4):
        t.forward(100)
        t.right(90)
    turtle.done()
    

    功能测试

    要注意的是关于turtle.speed(n)函数,n为0是最快的,然后从1开始速度依次增加。

    2.2 正多边形绘制

    有了正方形的前车之鉴,多边形的绘制就非常简单了,比较正方形就正四边形。

    import turtle
    
    turtle.title('是多边形哦~')
    
    # 以下的goto函数是为了方便我截图
    t = turtle.Turtle()
    t.speed(0)
    t.penup()
    t.goto(-350,350)
    t.pendown()
    
    sides = 6 #正多边形的边数
    for _ in range(sides):
        t.forward(100)
        t.right(360/sides) #因为是正六边形,所以旋转60度
    turtle.done()
    

    正六边形

    如果我把边数无限制的增加,是不是就得到了一个圆呢?
    近似圆

    近似看成圆,这其实是正360边形。
    难道在turtle中绘制圆,只能这样绘制正多边形吗,也不是,下一个图形就圆的绘制了。

    2.3 同心圆的绘制

    绘制同心圆前,圆的绘制还是要知道的。

    import turtle
    
    turtle.title('我是圆哦~')
    
    t = turtle.Turtle()
    t.speed(0)
    t.penup()
    t.goto(-250,200)
    t.pendown()
    
    t.circle(100) #绘制一个半径为100单位的圆
    
    turtle.done()
    

    接下来就同心圆的绘制,因为是同心圆,这些圆的圆心都是相同的但是半径不同。那么只要我写一个循环让圆的半径不断地变大集就可以了,为了效果更丰富,我会让它们的颜色都不同

    import turtle
    import random
    arr = ['red','green','pink','gold','blue','yellow','black','orange']
    n = len(arr)
    turtle.title('是同心圆呢~')
    t = turtle.Turtle()
    
    t.speed(10)
    
    for radius in range(20,101,20):
        t.penup()
        t.goto(0,-radius) #移动到新圆的起点
        t.pendown()
        t.color(arr[random.randint(0,n-1)])
        t.circle(radius)
    
    turtle.done()
    

    画了这么多的图形。还没有画一个填充图形呢,下面让我们开始填充图形的绘制吧

    2.4 填充图形的绘制

    其实填充图形,只要加两个函数就可以了,以正方形来举例吧

    import turtle
    
    turtle.title('要padding了~')
    
    t = turtle.Turtle()
    t.speed(0) # 设置速度
    t.hideturtle() #隐藏海龟
    t.penup() #提起画笔
    t.goto(-300,300) #跳转到指定坐标
    t.pendown() #放放下画笔
    t.fillcolor('blue') #设置填充颜色
    t.begin_fill()
    t.speed(1) #重新设置速度
    for _ in range(4):
        t.forward(100)
        t.right(90)
    t.end_fill()
    turtle.done()
    

    2.5 五角星的绘制

    画到现在,turtle库的内容,大家应该都是没有问题了,可能更重要的就是图形怎么画。就像下面的五角星,你知道五角星怎么画吗?
    其实和正多边形没什么区别,找到角度就可以了。

    import turtle
    
    turtle.title('我是五角星~')
    t = turtle.Turtle()
    t.speed(0)
    t.penup()
    t.goto(-300,300)
    t.pendown()
    
    for _ in range(5):
        t.forward(100)
        t.right(144) #五角星的角度
    
    turtle.done()
    

    2.6 螺旋图案的绘制

    螺旋图形的绘制,重在螺旋,对于角度要使用不规则的角度,否则就无法形成螺旋了。

    import turtle
    
    t = turtle.Turtle()
    t.speed(0)  # 设置最快速度
    
    colors = ["red", "blue", "green", "orange", "purple"]
    
    for i in range(1000):
        t.color(colors[i % len(colors)])  # 循环使用颜色
        t.forward(i * 2)
        t.right(91)  # 稍微不规则的角度,形成螺旋图案
    
    turtle.done()
    
    

    效果还是非常不错了

    如果我们使用的90度的规则角度呢?
    晕~

    有点晕了~

    3. turtle的进阶操作

    1. 通过turtle.shape()改变海龟的形状。
    turtle.shape("turtle")  # 改为乌龟形状
    turtle.shape("circle")  # 改为圆形
    turtle.shape("triangle")  # 改为三角形
    
    1. 支持简单的事件响应(如键盘和鼠标事件)
    import turtle
    
    def move_forward():
        t.forward(50)
    
    def turn_left():
        t.left(45)
    
    t = turtle.Turtle()
    screen = turtle.Screen()
    
    screen.listen()  # 开始监听事件
    screen.onkey(move_forward, "Up")  # 按上键移动
    screen.onkey(turn_left, "Left")  # 按左键旋转
    
    turtle.done()
    

    4. 总结

    Python 的 turtle 库是一个简单易用的绘图工具,它让你可以通过编写代码,像小乌龟一样在屏幕上自由创作。无论是几何图形、艺术图案,还是动态动画,turtle 都能轻松实现。它不仅是初学者学习编程逻辑和图形学的绝佳入门选择,也是开发者探索创意编程的有趣工具。
    往期文章:python
    文章代码:gitee

    作者:Yui_

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python 绘图魔法:用turtle库开启你的编程艺术之旅

    发表回复