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

news2024/11/19 13:44:31

文章目录

  • 前言
  • 一、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.coloradmin.cn/o/2178158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL内置数据库】 mysql

目录 统计 columns_priv component db default_roles engine_cost func general_log global_grants gtid_executed help_category help_keyword help_relation help_topic innodb_index_stats innodb_table_stats ndb_binlog_index password_history plugin…

【RocketMQ】SpringBoot整合RocketMQ

🎯 导读:本文档详细介绍了如何在Spring Boot应用中集成Apache RocketMQ,并实现消息生产和消费功能。首先通过创建消息生产者项目,配置POM文件引入RocketMQ依赖,实现同步消息发送,并展示了如何发送普通字符串…

STM32+ADC+扫描模式

1 ADC简介 1 ADC(模拟到数字量的桥梁) 2 DAC(数字量到模拟的桥梁),例如:PWM(只有完全导通和断开的状态,无功率损耗的状态) DAC主要用于波形生成(信号发生器和音频解码器) 3 模拟看门狗自动监…

Ract vs Vue 你更喜欢谁?

React 和 Vue 是当今最受欢迎的两个前端框架,各自有其独特的特点和优势。以下是对这两个框架的详细比较和分析,以帮助你了解它们的异同和适用场景: React 简介 React 是由 Facebook 开发和维护的一个开源 JavaScript 库,主要用于…

OpenAI员工流失的背后:地盘争夺、倦怠、薪酬要求

近日,OpenAI的CTO Mira Murati宣布离职,同一天,首席研究官Bob McGrew、研究副总裁Barret Zoph也宣布离职。 据统计,这已经是2024年第11起OpenAI高管离职事件了。 至今,开启“ChatGPT时刻”的四位OpenAI领袖&#xff…

河南移动:核心营业系统稳定运行超300天,数据库分布式升级实践|OceanBase案例

河南移动,作为电信全业务运营企业,不仅拥有庞大的客户群体和业务规模,还引领着业务产品与服务体系的创新发展。河南移动的原有核心营业系统承载着超过6000万的庞大用户量,管理着超过80TB的海量数据,因此也面临着数据规…

扩散模型(2)--1

1.简介 生成模型通过学习并建模输入数据的分布,从而采集生成新的样木,该模型广泛运用于图片视频生成、文本生成和药物分子生成。扩散模型是一类概率生成模型,扩散模型通过向数据中逐步加入噪声来破坏数据的结构,然后学习一个相对应…

在Windows系统上安装的 Boost C++ 库

步骤一 https://www.boost.org/users/history/version_1_86_0.html 下载Boost库文件: 步骤二 安装: https://www.boost.org/doc/libs/1_52_0/doc/html/bbv2/installation.html 点击运行.\bootstrap.bat脚本在当前目录的powershell中执行:./b2 install --prefixPREFIX 然后…

优选拼团平台架构解析与关键代码逻辑概述

一、系统架构设计 唐古拉优选拼团平台采用多层架构设计,主要包括前端展示层、业务逻辑层、数据访问层及数据存储层。 前端展示层:负责用户界面的展示和交互,包括商品列表、拼团详情、订单管理等页面。前端采用现代前端框架(如Vue…

第十四周学习周报

目录 摘要Abstract1. LSTM的代码实现2. 序列到序列模型3. 梯度与方向导数总结 摘要 在上周的学习基础之上,本周学习的内容有LSTM的代码实现,通过对代码的学习进一步加深了对LSTM的理解。为了切入到transformer的学习,本文通过对一些应用例子…

JUC高并发编程4:集合的线程安全

1 内容概要 2 ArrayList集合线程不安全 2.1 ArrayList集合操作Demo 代码演示 /*** list集合线程不安全*/ public class ThreadDemo4 {public static void main(String[] args) {// 创建ArrayList集合List<String> list new ArrayList<>();for (int i 0; i <…

铺铜修改后自动重铺

很多初学者对于敷铜操作感到比较麻烦&#xff1a;为什么每次打过孔&#xff0c;修改走线后都需要手动右击-重新修改敷铜。如何提升layout的效率&#xff1f; 版本&#xff1a;Altium Designer 21.9.2 首先&#xff0c;点击面板右边的小齿轮&#xff0c;进入设置 接下来&#…

9.29学习

1.线上问题rebalance 因集群架构变动导致的消费组内重平衡&#xff0c;如果kafka集内节点较多&#xff0c;比如数百个&#xff0c;那重平衡可能会耗时导致数分钟到数小时&#xff0c;此时kafka基本处于不可用状态&#xff0c;对kafka的TPS影响极大 产生的原因 ①组成员数量发…

【C++并发入门】摄像头帧率计算和多线程相机读取(上):并发基础概念和代码实现

前言 高帧率摄像头往往应用在很多opencv项目中&#xff0c;今天就来通过简单计算摄像头帧率&#xff0c;抛出一个单线程读取摄像头会遇到的问题&#xff0c;同时提出一种解决方案&#xff0c;使用多线程对摄像头进行读取。同时本文介绍了线程入门的基础知识&#xff0c;讲解了…

2-107 基于matlab的hsv空间双边滤波去雾图像增强算法

基于matlab的hsv空间双边滤波去雾图像增强算法&#xff0c;原始图像经过光照增强后&#xff0c;将RGB转成hsv&#xff0c;进行图像增强处理&#xff0c;使图像更加清晰。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a; 2-107 基于matlab的hsv空间双边滤…

“找不到emp.dll,无法继续执行代码”需要怎么解决呢?分享6个解决方法

在日常使用电脑玩游戏的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中最常见的就是“emp.dll丢失”。那么&#xff0c;emp.dll到底是什么&#xff1f;它为什么会丢失&#xff1f;丢失后会对我们的电脑产生什么影响&#xff1f;本文将为您详细解析emp.dll的概念…

超详细的华为ICT大赛报名流程

1、访问华为人才在线官网&#xff0c;点击右上角“登录/注册“&#xff0c;登录华为账号。 报名链接&#xff1a; https://e.huawei.com/cn/talent/cert/#/careerCert?navTypeauthNavKey ▲如已有华为Uniportal账号&#xff0c;完成实名认证后方可报名大赛。 ▲如没有华为…

【有啥问啥】具身智能(Embodied AI):人工智能的新前沿

具身智能&#xff08;Embodied AI&#xff09;&#xff1a;人工智能的新前沿 引言 在人工智能&#xff08;AI&#xff09;的进程中&#xff0c;具身智能&#xff08;Embodied AI&#xff09;正逐渐成为研究与应用的焦点。具身智能不仅关注于机器的计算能力&#xff0c;更强调…

需求5:增加一个按钮

在之前的几个需求中&#xff0c;我们逐步从修改字段到新增字段&#xff0c;按部就班地完成了相关工作。通过最近的文章&#xff0c;不难看出我目前正在处理前端的“未完成”和“已完成”按钮。借此机会&#xff0c;我决定趁热打铁&#xff0c;重新梳理一下之前关于按钮实现的需…

4、MapReduce编程实践

目录 1、创建文件2、启动HDFS3、启动eclipse 创建项目并导入jar包file->new->java project导入jar包finish 4、编写Java应用程序5、编译打包应用程序&#xff08;1&#xff09;查看直接运行结果&#xff08;2&#xff09;打包程序&#xff08;3&#xff09;查看 JAR 包是…