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

画个心,写个花!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 绘图技巧,并且能够激发你创作出更多有趣的图形作品。如果你有任何疑问或建议,欢迎在评论区留言讨论🌹

相关文章:

  • Linux系统安装和配置 VNC 服务器
  • 【第四章 IP 子网划分】
  • 使用Python创建EXE运行器和截图工具
  • 【OS】计算机系统概述|操作系统基本概念|并发|并行|虚拟异步
  • Stable Diffusion 的 ControlNet 主要用途
  • 【APM】在Kubernetes中,使用Helm安装loki-distributed 3.1.1
  • 【高效管理集合】并查集的实现与应用
  • 【工具分享】BlackBasta勒索病毒解密工具
  • C语言扫盲
  • 2、Stable Diffusion
  • Latex 自定义运算符加限定条件的实现
  • 2024年7天自学网络安全(黑客技术)进阶手册。
  • 大语言模型之LlaMA系列- LlaMA 2及LLaMA2_chat(上)
  • HAproxy,nginx实现七层负载均衡
  • AMBER学习记录--使用Multiwfn计算有机小分子的RESP电荷--问题及解决
  • ES6指北【2】—— 箭头函数
  • python3.6+scrapy+mysql 爬虫实战
  • Apache Pulsar 2.1 重磅发布
  • avalon2.2的VM生成过程
  • KMP算法及优化
  • Octave 入门
  • PHP 的 SAPI 是个什么东西
  • Redis 中的布隆过滤器
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • webpack+react项目初体验——记录我的webpack环境配置
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 离散点最小(凸)包围边界查找
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 前端之React实战:创建跨平台的项目架构
  • 使用common-codec进行md5加密
  • 问题之ssh中Host key verification failed的解决
  • 小程序button引导用户授权
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #git 撤消对文件的更改
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $.ajax,axios,fetch三种ajax请求的区别
  • $forceUpdate()函数
  • (1)svelte 教程:hello world
  • (152)时序收敛--->(02)时序收敛二
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (NSDate) 时间 (time )比较
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (不用互三)AI绘画工具应该如何选择
  • (二) 初入MySQL 【数据库管理】
  • (转)jQuery 基础
  • (转载)Linux网络编程入门