当前位置: 首页 > article >正文

画个心,写个花!Python Turtle库带你玩转创意绘图!

文章目录

  • 前言
  • 一、Turtle 库基础介绍
  • 二、画布设置
  • 三、画笔属性设置
    • 1.画笔颜色设置
    • 2.画笔粗细与速度设置
    • 3.画笔形状设置
  • 四、画笔移动函数
  • 五、画笔控制函数
  • 六、实战案例一:“花”字绘制
  • 七、实战案例二:心型图案绘制
  • 总结


前言

Python 的 turtle 库是一种简单易用的绘图工具,非常适合初学者学习编程。本文将详细介绍如何使用 turtle 库进行画布设置、画笔属性设置、画笔的移动与控制函数,并结合两个实战案例,包括“花”字绘制和心型图案的绘制。

在这里插入图片描述


一、Turtle 库基础介绍

turtle 库模拟了一个小乌龟,作为一个画笔在画布上绘制各种图形。该库中的大部分操作是通过控制这只乌龟(即画笔)来实现的,用户可以指定乌龟的移动方向、画笔颜色、线条粗细等。
安装与引入
通常情况下,Python 内置了 turtle 库,无需额外安装,直接引入即可使用:

import turtle

二、画布设置

在开始绘图前,我们需要先设置画布的大小,画布是turtle库展开绘图的区域,可以使用setup()函数来设置画布的大小和位置。turtle.setup() 函数用于设定画布的宽度和高度。

turtle.setup(width=1000, height=700)  # 设置画布大小为宽1000像素,高700像素

在这里插入图片描述

初始时,小海龟位于画布的正中央,即坐标系中的(0,0)位置,向水平向右方向行进
在这里插入图片描述


三、画笔属性设置

Turtle 提供了丰富的画笔属性控制函数,包括画笔颜色、粗细、形状等。

1.画笔颜色设置

turtle.pencolor("color"): 用于设置画笔颜色。颜色可以是颜色名或 RGB 值

turtle.pencolor("pink")  # 设置画笔颜色为粉色
turtle.pencolor((255,192,203)) # 设置画笔颜色为粉色

在这里插入图片描述

2.画笔粗细与速度设置

turtle.pensize(size): 设置画笔的粗细

turtle.pensize(20)  # 设置画笔粗细为20像素

turtle.speed(speed):设置画笔的速度,speed是指画笔的速度,数字越大速度越快

turtle.speed(3)

3.画笔形状设置

turtle.shape() 可以改变画笔的形状,如 turtlearrowcircle

turtle.shape("turtle")  # 将画笔形状设置为乌龟形状

在这里插入图片描述


四、画笔移动函数

Turtle 提供了丰富的移动控制函数,可以让画笔在画布上按照指定的方向和距离进行绘制。

turtle.penup(): 抬起画笔,移动时不绘制。
turtle.pendown(): 放下画笔,移动时绘制。
turtle.forward(distance): 向前移动指定的像素距离。
turtle.backward(distance): 向后移动指定的像素距离。
turtle.goto(x, y): 将画笔移动到指定的坐标。
turtle.setheading(angle): 将画笔的朝向设置为指定角度。
turtle.circle(radius, angle): 绘制指定半径和角度的圆或弧。

在这里插入图片描述

turtle库中的角度坐标体系,以正东方向为绝对0度,即小海龟初始爬行方向。角度坐标体系是绝对方向体系,与小海龟爬行的当前方向无关,可以用于改变小海龟前进方向。
在这里插入图片描述


五、画笔控制函数

画笔控制函数可以实现填充图形、显示画笔和隐藏画笔等功能。

在这里插入图片描述


六、实战案例一:“花”字绘制

接下来,我们通过一个实战案例,使用 turtle 库绘制一个“花”字的图形,你们也可以绘制属于自己的姓
在这里插入图片描述

import turtle

turtle.setup(width=1000, height=700)
turtle.pencolor("pink")
turtle.shape("turtle")
turtle.pensize(20)

# 草字头
turtle.penup()
turtle.goto(-250, 200)
turtle.pendown()
turtle.forward(500)
turtle.backward(350)
turtle.setheading(90)
turtle.forward(100)
turtle.backward(200)
turtle.forward(100)
turtle.setheading(0)
turtle.forward(200)
turtle.setheading(90)
turtle.forward(100)
turtle.backward(200)
turtle.forward(100)

# 左下角
turtle.penup()
turtle.goto(-100,0)
turtle.pendown()
turtle.goto(-250,-200)
turtle.penup()
turtle.goto(-150,-100)
turtle.pendown()
turtle.backward(150)

# 右下角
turtle.penup()
turtle.goto(250,0)
turtle.pendown()
turtle.goto(0,-100)

turtle.penup()
turtle.goto(100,0)
turtle.pendown()
turtle.backward(250)
turtle.setheading(0)
turtle.forward(200)
turtle.setheading(90)
turtle.forward(75)


# 关闭画布
turtle.hideturtle()
turtle.exitonclick()

七、实战案例二:心型图案绘制

接下来,我们通过第二个实战案例,使用 turtle 绘制一个简单的心型图案。
在这里插入图片描述

import turtle
turtle.setup(600,400)          #设置画布大小为宽600,高400
turtle.pensize(2)                  #设置画笔宽度为2
turtle.penup()                      #抬起画笔,不绘制,准备调整画笔位置
turtle.goto(0,90)                  #将画笔挪至坐标(0,90)处
turtle.left(135)                      #逆时针转动画笔135度
turtle.begin_fill()                  #准备开始填充图形
turtle.color("pink","pink")    #画笔和填充颜色均设置为粉色
turtle.pendown()                 #准备绘制图形
turtle.circle(63.65,180)        #绘制半径为63.65,角度为180的左侧半圆
turtle.goto(0,-90)                #边绘制边移动画笔至(0,-90)
turtle.goto(90,0)                  #边绘制边移动画笔至(90,0)
turtle.setheading(45)           #调整画笔方向为绝对方向45度
turtle.circle(63.65,180)         #绘制半径为63.65,角度为180的右侧半圆
turtle.end_fill()                     #填充图形完成
turtle.hideturtle()                 #隐藏画笔形状
turtle.exitonclick()                #不关闭画布,可以手动关闭画布

总结

通过本文,我们详细介绍了如何使用 Python 的 turtle 库进行画布设置、画笔属性设置、画笔移动与控制,并结合两个实战案例“花”字绘制和心型图案绘制,展示了该库在绘图中的应用。turtle 库作为初学者友好的工具,不仅能让我们轻松上手编程绘图,还能激发我们对图形化编程的兴趣。希望这篇文章能够帮助你掌握基本的 turtle 绘图技巧,并且能够激发你创作出更多有趣的图形作品。如果你有任何疑问或建议,欢迎在评论区留言讨论🌹


http://www.kler.cn/news/325251.html

相关文章:

  • bluefs _flush_range allocated: osd用空间但是显示ceph_bluefs_db_used_bytes is 100%
  • 【国庆要来了】基于Leaflet的旅游路线WebGIS可视化实践
  • 240924-通过服务器代理ip地址及port端口wget等下载文件
  • 如何判断IP有没有被污染过
  • 产品管理 - 互联网产品(3) : 迭代管理
  • 小米笔记本电脑笔记
  • es7.13.2请求体过大
  • java8:处理数据stream并传值
  • 瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法
  • pysim-1
  • [Redis][集群][上]详细讲解
  • ComfyUI 速度更快,显存占用更低的图像反推模型Florence2PromptGen,效果媲美JoyCaption,还支持Flux训练打标
  • Linux驱动开发(速记版)--驱动基础
  • 2024重生之回溯数据结构与算法系列学习(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
  • 单ISP与双ISP的区别是什么
  • 踩坑集之demosaic对接VDMA
  • 第三十八条:使用接口模拟可扩展的枚举
  • Vue 学习
  • unity安装报错问题记录
  • Web端云剪辑解决方案,提供多轨视频、音频、特效、字幕轨道可视化编辑
  • DC00016基于java swing+MySQL房屋租赁管理系统GUI租赁管理系统javaswing项目
  • 20240926 关于Goland处理wsl-GOROOT原理猜测
  • Spring Cloud 工程搭建服务注册_服务发现
  • OCR Fusion: EasyOCR/Tesseract/PaddleOCR/TrOCR/GOT
  • 我在 Thoughtworks 被裁前后的经历
  • spark 大表与大表join时的Shuffle机制和过程
  • Python通过Sqlalchemy框架实现增删改查
  • Qt网络编程——QTcpServer和QTcpSocket
  • centos7 semanage 离线安装 SELinux
  • Vue3 + TS 实现同一项目同一链接,pc端打开是web应用,手机打开是H5应用