画个心,写个花!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 turtleturtle.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.rhkb.cn/news/435209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于宝塔PHP getenv无法获取环境变量问题解决办法

今天有用ThinkPHP8接入阿里云OSS时,需要用的用到getenv()来读取环境变量,因为新版OSS SDK是用环境变更来设置AK的。 现象 正常执行PHP文件,可以取到环境变量;但是通过nginxphp-fpm调用脚本取到不到环境变量 原因 php-fpm为了防止…

[spring]用MyBatis XML操作数据库 其他查询操作 数据库连接池 mysql企业开发规范 动态sql

文章目录 一. MyBatis XML配置文件1. 配置链接字符串和MyBatis2. 写持久层代码方法定义Interface方法实现xml测试 3. 增删改查增:删改查 二. 开发规范(mysql)三. 其他查询操作1. 多表查询2. #{} 和 ${}(面试题)使用区别 排序功能like查询 三. 数据库连接池四. 动态sql1. < i…

使用shc|gzexe加密shell脚本,并配置全局可用

前言&#xff1a;堡垒机上多厂家共用&#xff0c;导致脚本需要加密并设置过期时间 一、使用shc&#xff08;二进制&#xff09; 1、安装shc sudo yum install epel-release sudo yum -y install shc sudo yum -y instal epel-release && sudo yum -y install shc 2、…

图像增强论文精读笔记-Deep Retinex Decomposition for Low-Light Enhancement(Retinex-Net)

1. 论文基本信息 论文标题&#xff1a;Deep Retinex Decomposition for Low-Light Enhancement 作者&#xff1a;Chen Wei等 发表时间和期刊&#xff1a;2018&#xff1b;BMVC 论文链接&#xff1a;https://arxiv.org/abs/1808.04560 2. 研究背景和动机 低光照条件下拍摄的…

计算机毕业设计 基于 Hadoop平台的岗位推荐系统 SpringBoot+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

tauri开发软件中,使用tauri自带的api用浏览器打开指定的url链接

有能力的可以看官方文档&#xff1a;shell | Tauri Apps 就是使用这个api来打开指定的url链接&#xff0c;要在tauri.config.json中配置打开这个api&#xff1a; 然后在前端页面中导入使用&#xff1a; import { open } from tauri-apps/api/shell; // opens the given URL o…

ODA(Open Design Alliance)试用小记-ODA提供源码下载就完全可控了吗?

1.概述 ODA(Open Design Alliance)库架构如下&#xff1a; 产品体系如下&#xff1a; ODA的产品体系越来越壮大&#xff0c;包括主流BIM格式SDK、Viewer、Cloud、数据交换等&#xff0c;每个模块需要单独购买&#xff0c;并提供“源码服务”。 2.是否可控&#xff1f; 值得…

【rust】 基于rust编写wasm,实现markdown转换为html文本

文章目录 背景转换预览核心代码前置依赖rustup换源 cargo本地路径修改&#xff08;可选&#xff09;cargo换源中科大 wasm-pack安装 背景 尝试用rust编写一款markdown转html的插件&#xff0c;通过wasm给html使用&#xff0c;不得不说体积挺小&#xff0c;约200K&#xff0c; …

深度学习——D2(数据操作)

N维数组 创建数组 访问元素 一列: [ : , 1 ] 反向累积、正向累积&#xff08;自动求导&#xff09; 梯度 梯度&#xff08;Gradient&#xff09;是微积分中的一个重要概念&#xff0c;主要用于描述一个函数在某个区域内的变化情况。以下是对梯度的详细解释&#xff1a; 一…

Qorvo® 推出具有卓越能效的新一代 Matter™ 解决方案

全新 SoC 利用 ConcurrentConnect™ 技术实现智能家居的无缝互联 Qorvo今日宣布&#xff0c;推出面向智能家居设备的全新片上系统&#xff08;SoC&#xff09;解决方案——QPG6200L&#xff0c;并已向主要客户提供样品。该款下一代物联网&#xff08;IoT&#xff09;解决方案采…

数据结构双链表和循环链表

目录 一、循环链表二、双向链表三、循环双向链表 一、循环链表 循环链表就是首尾相接的的链表&#xff0c;就是尾节点的指针域指向头节点使整个链表形成一个循环&#xff0c;这就弥补了以前单链表无法在后面某个节点找到前面的节点&#xff0c;可以从任意一个节点找到目标节点…

【YashanDB知识库】如何配置jdbc驱动使getDatabaseProductName()返回Oracle

本文转自YashanDB官网&#xff0c;具体内容请见https://www.yashandb.com/newsinfo/7352676.html?templateId1718516 问题现象 某些三方件&#xff0c;例如 工作流引擎activiti&#xff0c;暂未适配yashandb&#xff0c;使用中会出现如下异常&#xff1a; 问题的风险及影响 …

实际有库存却提示可用量不足保存不了杂发单

财务要统计研发费用&#xff0c;成本的金额。研发人员没有足够的意识配合。开立请购单时兴之所致&#xff0c;任性自由。想弄一个项目号就弄一个。不开心就没有项目号啦。哪管他人死活。 U9的逻辑&#xff0c;请购单如果带入项目号&#xff08;客制化的功能&#xff09;&#x…

《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测

文章目录 一、Harris 角点检测1.基本思想2.检测步骤3.OpenCV实现 二、SIFT特征检测1. SIFT特征检测的基本原理2. SIFT特征检测的特点3. OpenCV 实现 一、Harris 角点检测 OpenCV中的Harris角点检测是一种基于图像灰度值变化的角点提取算法&#xff0c;它通过计算每个像素点的响…

Java五子棋

目录 一&#xff1a;案例要求&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;案例要求&#xff1a; 实现一个控制台下五子棋的程序。用一个二维数组模拟一个15*15路的五子棋棋盘&#xff0c;把每个元素赋值位“┼”可以画出棋…

一文说透RTMP、RTSP、RTP、HLS、MPEG-DASH

实时视频传输协议 1. RTMP&#xff08;Real Time Messaging Protocol&#xff09; 简介&#xff1a;RTMP是由Adobe公司开发的实时消息传输协议&#xff0c;主要用于流媒体数据的传输。它基于TCP传输&#xff0c;具有低延迟、高可靠性的特点。特点&#xff1a;RTMP支持多种视频…

9.29总结

这星期学了概率和组合数学 这是我觉得的一个有趣的题目&#xff0c;每个人身上都有n-1根绳子&#xff0c;如果组不成稳定三角&#xff0c;那么肯定有两个人相邻两根绳子颜色不一样&#xff0c;那么每两个这样的人就会贡献一个不稳定三角形&#xff0c;所以只要所有三角形减去每…

统信UOSv20专业版(1050)桌面操作系统设置root密码

统信UOSv20专业版(1050)桌面操作系统设置root密码 1. 系统版本信息 版本信息 kalamiuos:~$ uname -r 4.19.0-amd64-desktop kalamiuos:~$ kalamiuos:~$ uname -a Linux uos 4.19.0-amd64-desktop #5310 SMP Mon Oct 10 19:43:13 CST 2022 x86_64 GNU/Linux kalamiuos:~$ kal…

Vue3-TS-Lodash:理解Lodash / 常用方法积累

一、Lodash官网 Lodash 简介 | Lodash中文文档 | Lodash中文网 二、理解Lodash Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。它提供了大量的函数来帮助你处理数组、数值、对象、字符串等&#xff0c;使你的代码更加简洁、易读和高效。Lodash 的设计哲学是…

【Mybatis篇】动态SQL的详细带练

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 文章目录 &#x1f3af;一.动态SQL简单介绍 &#x1f6a6;动态S…