返回顶部
首页 > 资讯 > 后端开发 > Python >#18 turtle模块
  • 943
分享到

#18 turtle模块

模块turtle 2023-01-30 23:01:09 943人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

前言 这一节继续记录模块,本节将记录python中一个非常重要的画图模块——turtle,Here we Go! 一、turtle模块 turtle(海龟)模块是Python中强大的内置画图模块,可以模拟真实的画图环境以及画图步骤来画图。

前言

这一节继续记录模块,本节将记录python中一个非常重要的画图模块——turtle,Here we Go

一、turtle模块

turtle(海龟)模块是Python中强大的内置画图模块,可以模拟真实的画图环境以及画图步骤来画图。通常,我们画图需要两种工具,一个是画布,另一个是画笔;在turtle中,同样需要这两种工具,首先来学习画布的设置

1. 画布

画布无非不过设置画布大小、背景颜色、画布在桌面的位置,turtle模块中,有两种画布的设置方法,需要时可将它们结合起来使用:

turtle.screensize(canvwidth=400, canvheight=300, bg=None)   「canvwidth表示画布宽、canvheight表示画布高、bg表示背景颜色」

In [19]: import turtle                             # 导入turtle模块

In [21]: turtle.screensize()                       # 设置默认尺寸
Out[21]: (400, 300)

In [22]: turtle.screensize(800,600)                # 将画布大小改为800x600,单位是像素
 
In [23]: turtle.screensize(800,600,bg='green')     # 也可以设置背景颜色

# 桌面上会出现一个画布,想要推出,输入turtle.done(),之后就可以点击画布上的x号关闭了

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)   「width表示画布宽、height表示画布高、startx表示画布在桌面上的坐标x位置、starty表示画布在桌面上的坐标y位置」

In [26]: import turtle

In [28]: turtle.setup()                # 设置默认画布大小

In [29]: turtle.setup(800,600)         # 将画布大小改为800x600,单位是像素

In [30]: turtle.setup(0.5,0.5)         # 将画布大小改为占当前屏幕的0.5x0.5,无单位,这是一个比例

In [31]: turtle.setup(800,600,50,50)   # 设置画布初始位置为(50,50)

# 注意:当宽高为大于1的整数时,单位为像素;当宽高为小于1的小数时,为占当前屏幕的比例

如果要给有背景色的画布设置初始位置,则可以将上述两种方法结合起来使用:

In [34]: import turtle

In [36]: turtle.screensize(bg='green')   # 首先设置背景色

In [37]: turtle.setup(800,600,200,200)   # 再设置宽高和位置

2. 画笔

说完了画布设置,就剩下画笔了,画笔这一部分有些复杂,因为不仅要设置画笔的粗细颜色等,还要给画笔前进后退旋转等动作

2.1 画笔设置

turtle.pensize(width=None)   「width表示画笔的宽度」

In [39]: turtle.pensize(20)   # 设置画笔的宽度为20像素

turtle.pencolor(*args)   「可以传入多种参数,例如直接传入颜色‘green’,也可以传入RGB配色0.2,0.8,0.55」

In [42]: turtle.pencolor('green')   # 设置画笔颜色为绿色,直接传入颜色

In [43]: turtle.pencolor(0.2, 0.8, 0.55)   # 传入RGB配色

turtle.speed(speed=None)   「speed代表画笔速度」

In [45]: turtle.speed(5)   # 设置画笔速度为5

2.2 画笔动作

turtle.forward(distance) / turtle.fd(distance)  「画笔前进,distance代表距离」

turtle.backward(distance) / turtle.bk(distance) 「画笔后退,distance代表距离」

In [50]: turtle.fd(200)   # 画笔前进200像素

In [51]: turtle.bk(300)   # 画笔后退300像素

turtle.seth(degree) 「画笔运动的方向,degree代表角度」

In [77]: turtle.seth(90)   # 画笔运动方向为90度正方向

# 注意:这个是轴的正方向,不是画笔的指向,有正负之分,90表示逆时针90度,-90表示顺时针90度

turtle.left(degree) 「画笔逆时针旋转,degree代表角度」

turtle.right(degree) 「画笔顺时针旋转,degree代表角度」

In [52]: turtle.left(90)    # 画笔逆时针旋转90度

In [54]: turtle.right(90)   # 画笔顺时针旋转90度

turtle.goto(x,y) 「将画笔移动到坐标(x,y)处」

In [55]: turtle.goto(300,300)   # 将画笔移动到坐标(300,300)处

# 注意:假如画笔现在的位置为(10,10),使用上条命令后,画笔移动到(300,300)处,这时候会在画布上留下一条(10,10)到(300,300)的线段

turtle.penup() 「提起画笔」

In [56]: turtle.penup()     # 将画笔提起

# 这时候使用前进后退或者goto方法都不会在画布上留下痕迹

trutle.pendown() 「落下画笔」

In [57]: turtle.pendown()   # 落下画笔

# 之后使用前进后退或goto方法会在画布上留下痕迹

turtle.circle(radius, extent=None, steps=None) 「画圆方法,radius表示半径、extent表示圆的角度、steps表示圆内切多边形的边数」

In [59]: turtle.circle(50)           # 画一个半径为50像素的圆

In [60]: turtle.circle(60,180)       # 画一个半径为60像素的半圆

In [61]: turtle.circle(70,steps=6)   # 画一个内切于半径为70像素圆的6变形,注意:这是一个多边形,不是圆

turtle.hideturtle() 「隐藏画笔箭头」

turtle.showturtle() 「显示画笔箭头」

In [62]: turtle.hideturtle()   # 隐藏画笔箭头

In [63]: turtle.showturtle()   # 显示画笔箭头

# turtle模块默认箭头时显示的,可以将其隐藏

turtle.isvisile() 「返回画笔箭头是否存在的结果」

In [71]: turtle.isvisible()   # 返回True,说明画笔箭头可见
Out[71]: True

In [72]: turtle.hideturtle()

In [73]: turtle.isvisible()   # 返回False,说明画笔箭头不可见
Out[73]: False

 turtle.fillcolor(*args) 「填充颜色设置,可以直接传入颜色,也可以传入RGB参数」

In [65]: turtle.fillcolor('yellow')   # 设置填充颜色为黄色

turtle.begin_fill() 「开始填充图形」

turtle.end_fill() 「结束填充」

In [66]: turtle.begin_fill()   # 准备开始填充图形

In [67]: turtle.end_fill()     # 结束填充

turtle.flling() 「返回当前图形是否在填充的结果」

In [68]: turtle.filling()      # 返回False,说明当前图形不在填充
Out[68]: False

In [69]: turtle.begin_fill()

In [70]: turtle.filling()      # 返回True,说明当前图形正在填充
Out[70]: True

turtle.undo() 「撤销上一个画笔动作」

In [74]: turtle.undo()   # 撤销上一个画笔动作

turtle.clear() 「清空画布,但保留当前画笔状态和位置」

In [75]: turtle.clear()   # 清空画布,保留画笔状态和位置

turtle.reset() 「清空画布,画笔不再保留原有状态和位置」

In [76]: turtle.reset()   # 清空画布,不会保留画笔状态和位置

# 注意:画布属性没有被重置,依然保留原画布大小、背景色和画布位置

turtle.write(s[,font=("font-name",font_size,"font_type")])) 「画笔写字,s代表要写的字符串、font-name代表字体名称、font-size代表字体大小、font-type代表字体类型」

In [78]: turtle.write('MinuteSheep')    # 写下MinuteSheep

turtle.done() 「完成画作」

In [79]: turtle.done()   # 完成画作

# 此时可以点击图画上的x号关闭图画了

3. 示例

3.1 示例一:太阳花   「来自官网」

 1 from turtle import *
 2 color('red', 'yellow')   # 画笔颜色为red,填充颜色为yellow
 3 begin_fill()   # 开始填充
 4 while True:
 5     forward(200)
 6     left(170)
 7     if abs(pos()) < 1:
 8         break
 9 end_fill()
10 done()

 效果如图: 

3.2 示例二:小猪佩奇   「来自:https://www.cnblogs.com/nowgood/p/turtle.html#_nav_11」

  1 # coding:utf-8
  2 import turtle as t
  3 # 绘制小猪佩奇
  4 # =======================================
  5 
  6 t.pensize(4)
  7 t.hideturtle()
  8 t.colORMode(255)
  9 t.color((255, 155, 192), "pink")
 10 t.setup(840, 500)
 11 t.speed(10)
 12 
 13 # 鼻子
 14 t.pu()
 15 t.goto(-100,100)
 16 t.pd()
 17 t.seth(-30)
 18 t.begin_fill()
 19 a = 0.4
 20 for i in range(120):
 21     if 0 <= i < 30 or 60 <= i < 90:
 22         a = a+0.08
 23         t.lt(3)  # 向左转3度
 24         t.fd(a)  # 向前走a的步长
 25     else:
 26         a = a-0.08
 27         t.lt(3)
 28         t.fd(a)
 29         t.end_fill()
 30 
 31 t.pu()
 32 t.seth(90)
 33 t.fd(25)
 34 t.seth(0)
 35 t.fd(10)
 36 t.pd()
 37 t.pencolor(255, 155, 192)
 38 t.seth(10)
 39 t.begin_fill()
 40 t.circle(5)
 41 t.color(160, 82, 45)
 42 t.end_fill()
 43 
 44 t.pu()
 45 t.seth(0)
 46 t.fd(20)
 47 t.pd()
 48 t.pencolor(255, 155, 192)
 49 t.seth(10)
 50 t.begin_fill()
 51 t.circle(5)
 52 t.color(160, 82, 45)
 53 t.end_fill()
 54 
 55 # 头
 56 t.color((255, 155, 192), "pink")
 57 t.pu()
 58 t.seth(90)
 59 t.fd(41)
 60 t.seth(0)
 61 t.fd(0)
 62 t.pd()
 63 t.begin_fill()
 64 t.seth(180)
 65 t.circle(300, -30)
 66 t.circle(100, -60)
 67 t.circle(80, -100)
 68 t.circle(150, -20)
 69 t.circle(60, -95)
 70 t.seth(161)
 71 t.circle(-300, 15)
 72 t.pu()
 73 t.goto(-100, 100)
 74 t.pd()
 75 t.seth(-30)
 76 a = 0.4
 77 for i in range(60):
 78     if 0 <= i < 30 or 60 <= i <90:
 79         a = a+0.08
 80         t.lt(3)  # 向左转3度
 81         t.fd(a)  # 向前走a的步长
 82     else:
 83         a = a-0.08
 84         t.lt(3)
 85         t.fd(a)
 86         t.end_fill()
 87 
 88 # 耳朵
 89 t.color((255, 155, 192), "pink")
 90 t.pu()
 91 t.seth(90)
 92 t.fd(-7)
 93 t.seth(0)
 94 t.fd(70)
 95 t.pd()
 96 t.begin_fill()
 97 t.seth(100)
 98 t.circle(-50, 50)
 99 t.circle(-10, 120)
100 t.circle(-50, 54)
101 t.end_fill()
102 
103 t.pu()
104 t.seth(90)
105 t.fd(-12)
106 t.seth(0)
107 t.fd(30)
108 t.pd()
109 t.begin_fill()
110 t.seth(100)
111 t.circle(-50, 50)
112 t.circle(-10, 120)
113 t.circle(-50, 56)
114 t.end_fill()
115 
116 #眼睛
117 t.color((255, 155, 192), "white")
118 t.pu()
119 t.seth(90)
120 t.fd(-20)
121 t.seth(0)
122 t.fd(-95)
123 t.pd()
124 t.begin_fill()
125 t.circle(15)
126 t.end_fill()
127 
128 t.color("black")
129 t.pu()
130 t.seth(90)
131 t.fd(12)
132 t.seth(0)
133 t.fd(-3)
134 t.pd()
135 t.begin_fill()
136 t.circle(3)
137 t.end_fill()
138 
139 t.color((255, 155, 192), "white")
140 t.pu()
141 t.seth(90)
142 t.fd(-25)
143 t.seth(0)
144 t.fd(40)
145 t.pd()
146 t.begin_fill()
147 t.circle(15)
148 t.end_fill()
149 
150 t.color("black")
151 t.pu()
152 t.seth(90)
153 t.fd(12)
154 t.seth(0)
155 t.fd(-3)
156 t.pd()
157 t.begin_fill()
158 t.circle(3)
159 t.end_fill()
160 
161 # 腮
162 t.color((255, 155, 192))
163 t.pu()
164 t.seth(90)
165 t.fd(-95)
166 t.seth(0)
167 t.fd(65)
168 t.pd()
169 t.begin_fill()
170 t.circle(30)
171 t.end_fill()
172 
173 # 嘴
174 t.color(239, 69, 19)
175 t.pu()
176 t.seth(90)
177 t.fd(15)
178 t.seth(0)
179 t.fd(-100)
180 t.pd()
181 t.seth(-80)
182 t.circle(30, 40)
183 t.circle(40, 80)
184 
185 # 身体
186 t.color("red", (255, 99, 71))
187 t.pu()
188 t.seth(90)
189 t.fd(-20)
190 t.seth(0)
191 t.fd(-78)
192 t.pd()
193 t.begin_fill()
194 t.seth(-130)
195 t.circle(100,10)
196 t.circle(300,30)
197 t.seth(0)
198 t.fd(230)
199 t.seth(90)
200 t.circle(300,30)
201 t.circle(100,3)
202 t.color((255,155,192),(255,100,100))
203 t.seth(-135)
204 t.circle(-80,63)
205 t.circle(-150,24)
206 t.end_fill()
207 
208 # 手
209 t.color((255,155,192))
210 t.pu()
211 t.seth(90)
212 t.fd(-40)
213 t.seth(0)
214 t.fd(-27)
215 t.pd()
216 t.seth(-160)
217 t.circle(300,15)
218 t.pu()
219 t.seth(90)
220 t.fd(15)
221 t.seth(0)
222 t.fd(0)
223 t.pd()
224 t.seth(-10)
225 t.circle(-20,90)
226 
227 t.pu()
228 t.seth(90)
229 t.fd(30)
230 t.seth(0)
231 t.fd(237)
232 t.pd()
233 t.seth(-20)
234 t.circle(-300,15)
235 t.pu()
236 t.seth(90)
237 t.fd(20)
238 t.seth(0)
239 t.fd(0)
240 t.pd()
241 t.seth(-170)
242 t.circle(20,90)
243 
244 # 脚
245 t.pensize(10)
246 t.color((240,128,128))
247 t.pu()
248 t.seth(90)
249 t.fd(-75)
250 t.seth(0)
251 t.fd(-180)
252 t.pd()
253 t.seth(-90)
254 t.fd(40)
255 t.seth(-180)
256 t.color("black")
257 t.pensize(15)
258 t.fd(20)
259 
260 t.pensize(10)
261 t.color((240, 128, 128))
262 t.pu()
263 t.seth(90)
264 t.fd(40)
265 t.seth(0)
266 t.fd(90)
267 t.pd()
268 t.seth(-90)
269 t.fd(40)
270 t.seth(-180)
271 t.color("black")
272 t.pensize(15)
273 t.fd(20)
274 
275 # 尾巴
276 t.pensize(4)
277 t.color((255, 155, 192))
278 t.pu()
279 t.seth(90)
280 t.fd(70)
281 t.seth(0)
282 t.fd(95)
283 t.pd()
284 t.seth(0)
285 t.circle(70, 20)
286 t.circle(10, 330)
287 t.circle(70, 30)
288 t.done()

效果如图: 

--结束END--

本文标题: #18 turtle模块

本文链接: https://lsjlt.com/news/181072.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • #18 turtle模块
    前言 这一节继续记录模块,本节将记录Python中一个非常重要的画图模块——turtle,Here we go! 一、turtle模块 turtle(海龟)模块是Python中强大的内置画图模块,可以模拟真实的画图环境以及画图步骤来画图。...
    99+
    2023-01-30
    模块 turtle
  • 18 Python的sys模块
    概述         在上一节,我们介绍了Python的os模块,包括:os模块中一些常用的属性和函数。在这一节,我们将介绍Python的sys模块。sys模块提供了访问解释器使用或维护的变量,以及与解释器进行交互的函数。 通俗来讲,sys...
    99+
    2023-10-08
    python sys模块
  • Python用turtle模块画图
    学习使用模块turtle画图功能,主要记住几个参数import turtle #导入turtle画图模块turtle.showturtle() #调出turtle画板turtle.forward(100) #坐标前进100个位置tu...
    99+
    2023-01-31
    画图 模块 Python
  • 通过python turtle画图模块做
    最新再看python3,发现了一个“海龟”画图模块,就上手用了一下,主要用到一些简单的函数和列表适合初学者浏览。windows下写的,可以使用pyinstall生成exe文件。 #Copyright LeoYuan 2017 #mail:c...
    99+
    2023-01-31
    画图 模块 python
  • 用Python的turtle模块画国旗
    最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接: Python turtle。这里面有turtle的各类指令。turtle画国旗主要用到两个函数:draw_ren...
    99+
    2023-01-31
    国旗 模块 Python
  • 使Python中的turtle模块画图两
    turtle.circle(radius, extent=None, steps=None) 描述: 以给定半径画圆 参数: radius(半径); 半径为正(负),表示圆心在画笔的左边(右边)画圆 extent(弧度) (optiona...
    99+
    2023-01-31
    画图 模块 Python
  • Python绘图模块 turtle案例代码
    目录turtle模块概述Turtle让小海龟转弯画一颗五角星移动五角星turtle模块概述 Python 标准库中有个 turtle 模块,俗称海龟绘图,它提供了一些简单的绘图工具,...
    99+
    2023-01-06
    Python绘图模块 Python绘图模块turtle Python turtle绘图
  • Python的turtle模块有什么作用
    Python的turtle模块是一个图形化模块,可以用来绘制简单的图形、动画和游戏。它提供了一组用于控制一个小海龟图形的指令,通过这...
    99+
    2023-08-20
    Python turtle
  • Python turtle模块turtle.fd()是做什么的
    `turtle.fd()`是turtle模块中的一个函数,它用于将海龟(turtle)向前移动一定的距离,以当前方向和速度移动。参数...
    99+
    2023-08-21
    Python
  • 使用Python的turtle模块画图的方法
    简介:turtle是一个简单的绘图工具。它提供了一个海龟,你可以把它理解为一个机器人,只听得懂有限的指令。 1.在文件头写上如下行,这能让我们在语句中插入中文 #-*-coding:utf-8-*- 2.用...
    99+
    2022-06-04
    画图 模块 方法
  • Python使用turtle模块绘制爱心图案
    程序员的浪漫,你懂吗? 今天使用python小海龟实现爱心图案的绘制,代码如下: import turtle import time # 清屏函数 def clear_a...
    99+
    2024-04-02
  • Python中turtle绘图模块的详细讲解
    目录前言turtle基本概念调出模块引用turtle模块(库)方法例、写字函数write()的使用使用Python的turtle(海龟)模块画图步骤总结前言 turtle库是Pyth...
    99+
    2024-04-02
  • 如何在Python中利用Turtle模块绘制一个国旗
    本文章向大家介绍如何在Python中利用Turtle模块绘制一个国旗的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言...
    99+
    2023-06-06
  • 使用python图形模块turtle库绘制樱花、玫瑰、圣诞树代码
    绘制樱花的代码:```pythonimport turtle# 设置画布大小turtle.setup(800, 600)# 画樱花的...
    99+
    2023-09-16
    python
  • Python模块:time模块
    time模块:python中处理时间的基础模块,有时间戳,元组,自定义,三种时间表现形式。python中时间戳的值是以1970年1月1日0点开始计算的,单位是秒。时间戳:就是两个时间差的数值。时区:传说中在开发服务器/客户端程序时,时区不一...
    99+
    2023-01-31
    模块 Python time
  • python模块:smtplib模块
    1.使用本地的sendmail协议进行邮件发送格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])host:SMTP服务器主机的IP地址或者是域名port:服务的端口号(默...
    99+
    2023-01-31
    模块 python smtplib
  • 常用模块 - configparse模块
    一、简介 configparser模块在Python中是用来读取配置文件的,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节点(section),每个节可以有多个参数(键=值)。 二、生成配置文件 #! /us...
    99+
    2023-01-31
    模块 常用 configparse
  • 常用模块 - openpyxl模块
    一、简介 xlrd/xlwt          主要是针对Office 2003或更早版本的XLS文件格式          缺点:不支持XLSX文件格式 OpenPyXL          能读能写能修改          缺点:不支持...
    99+
    2023-01-31
    模块 常用 openpyxl
  • 常用模块 - hashlib模块
    一、简介 Python的hashlib提供了常见的摘要算法,如MD5、SHA1、SHA224、SHA256、SHA384、SHA512等算法。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长...
    99+
    2023-01-31
    模块 常用 hashlib
  • python常见模块之OS模块和time模块
    一、OS模块概述 Python OS模块包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。 二、常用方法 三、OS模...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作