Python海龟绘图详解
作者:是Dream呀 发布时间:2022-07-26 02:02:02
hello,大家好,我是Dream。最近有小伙伴私信我,说让我出一篇海龟画图,这其实我也不太能弄得明白,那在这里我和大家一块梳理一下!记得给我点赞收藏哟~
一.画笔和屏幕
这里单独拿开一个讲的话会很抽象,因为一个是线,另一个是面,面是线的载体,线是面的内容
首先大家先运行这一段代码:
import turtle#调用turtle库
turtle.title("绘制第一只海龟")#设置窗口名称
print('开始了')
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
我们可以看到运行结果是这个:
你会发现他只会存在一瞬间,画完就不见了
我们总会想让美好的瞬间多存在一会,这个时候我们往往会用到time这个库
让我们看一看新的代码:
import turtle
import time
turtle.title("绘制第一只海龟")
print('let's go')
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
time.sleep(10)#这里调用了time库,sleep顾名思义,睡眠的意思,括号里是秒数,就是你想让他停留几秒的意思
现在我们的画面便可以停留10s了
当然不用time也是可以的,上代码:
import turtle
turtle.title("绘制第一只海龟")
print('开始了')
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
turtle.exitonclick() # 实现单击鼠标左键时关闭窗口
或者你可以换成 turtle.done() 让画面一直停留
说了折磨多,那屏幕是怎么产生的呢?
来直接看代码:
turtle.setup(width=400, height=300, startx=None, starty=None)
这里是设置屏幕的大小,就像上一段代码一样,如果你没有设置大小的话,那屏幕就是默认值。
此处:
width:设置窗口的宽度,默认为屏幕的 50%。
height:设置窗口的高度,默认为屏幕的 50%。
startx:窗口距离屏幕左边缘多少距离,负值表示距离右边缘,None 表示窗口水平居中。
starty:窗口距离屏幕上边缘多少距离,负值表示距离下边缘,None 表示窗口垂直居中。
当然如果你觉得屏幕背景白色太单调的话你也可以设置一下他的背景颜色或者插入自己的图片(但图片大小不一,想要设置的好看的话,需要自己调节屏幕大小尺寸)
话不多说,直接上代码:
import turtle
turtle.title("绘制第一只海龟")
turtle.bgcolor("green")#这里是设计背景颜色
turtle.bgpic(picname='./imgs/xu.gif')#这里是插入图片,图片必须放在同一路径文件下
#图片格式必须为gif!!!,不然无法识别
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
turtle.done() # 海龟绘图程序的结束语句(开始主循环)turtle.done() # 海龟绘图程序的结束语句(开始主循环)
这是我自己的背景:
还行啊吧,我的眼光还是不错的哟~
关于屏幕知识也就这些了,接下来说一下画笔:
拿我们刚才写的代码来说:
import turtle
turtle.title("绘制第一只海龟")
turtle.bgcolor("green")#这里是设计背景颜色
turtle.bgpic(picname='./imgs/xu.gif')
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
turtle.done()
forward表示向前走,left向左拐多少度,back向后,right向右拐多少度,这是最基本的,看点稍微高级一点的:
import turtle
import time
turtle.goto(100, 100)
turtle.goto(-100, 100)
turtle.goto(100, -100)
turtle.goto(-100, -100)
turtle.goto(0, 0)
turtle.penup()#这里指从0开始抬笔,继续路线,只是不画了
turtle.forward(100)
turtle.right(90)
turtle.pendown()#落笔继续画
turtle.color("red")#画笔颜色
turtle.goto(100, -100)
time.sleep(5)
这里:初始位置都是0,就是屏幕中央
放下笔:pendown()
抬起笔:penup()
到指定坐标:goto(x, y)
颜色:color(“cc”)
画笔的颜色主要有:
黄色:yellow
红色:red
蓝色:blue
绿色:green
粉色:pink
紫色:purple
灰色:grey
橘色:orange
那如果你觉得画笔太细咋办,来上代码:
turtle.width(5)
这个帮你调粗细,初始值为1
如果你觉得速度不对呢,来上代码:
turtle.speed(0) # 设置画笔的速度,0为最快
其中0最快,直接出结果,1最慢,然后从2~10依次加快
那这些就是你要掌握的基础知识了~
二.实战与应用
1.写字
如何在上面写字呢:来来来上代码:
turtle.write( arg, move=False, align="left", font=("Arial", 8, "normal"))
arg:必选参数,用于指定要输出的文字内容,该内容会输出到当前海龟光标的所在位置。
move:可选参数,用于指定是否移动画笔到文本的右下角**,默认为False (不移动)。**
align:可选参数,用于指定文字的对齐方式,其参数值为left(居左)、center(居中)或者right(居右)中的任意一个,默认为 left。
font:可选参数,用于指定字体、字号和字形,通过一个三元组(字体,字号,字形)指定。
说明:字形可设置的值为normal(表示正常)、bold(粗体)、italic(斜体)、underline(下划线)等。
上代码:
import turtle # 导入海龟绘图模块
turtle.color("green") # 填充颜色
turtle.up() # 抬笔
turtle.goto(-300,0)
turtle.down() # 落笔
turtle.write("徐以鹏比易烊千玺帅亿点。", font=("宋体", 18, "normal"))
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
那就是这个效果了~
2.用于交互式写字
import turtle # 导入海龟绘图模块
turtle.color("green") # 填充颜色
word = turtle.textinput("温馨提示:", "请输入要打印的文字") # 弹出输入对话框
turtle.write(word, True, font=("宋体", 18, "italic")) # 输出文字
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
3.自己控制方向
import turtle
def move():
turtle.left(90)
turtle.forward(100)
turtle.listen()#监听鼠标
turtle.onkey(move, "w")#按w进行走动
turtle.done()
import turtle
def move():
turtle.forward(2)
turtle.listen()
turtle.onkeypress(move, "w")#一直按w才走
turtle.done()
4.拖动小海龟画图
ondrag():表示处理鼠标拖动事件
默认值为1(鼠标左键)、2(鼠标中键,即按下滑轮)、3(鼠标右键)
import turtle
t = turtle.Turtle()
t.shape("turtle")
t.color("green")
turtle.listen()
def fun(x, y):
t.pendown()
t.goto(x, y)
t.ondrag(fun, 1)
turtle.done()
5.规定时间后开始画
ontimer() 方法来实现一个计时器,用于达到指定时间时,执行一个操作
import turtle
def fun(): # 绘制正方形
for i in range(4):
turtle.forward(100)
turtle.left(90)
turtle.getscreen().ontimer(fun, 3000) # 设置计时器
turtle.done() # 海龟绘图程序的结束语句(开始主循环)
来源:https://blog.csdn.net/weixin_51390582/article/details/112327215


猜你喜欢
- 本文实例讲述了python使用Image处理图片常用技巧。分享给大家供大家参考。具体分析如下:使用python来处理图片是非常方便的,下面提
- 1. 在游戏循环中监听事件事件event:就是游戏启动后,用户针对游戏所做的操作例如:点击关闭按钮,点击鼠标,按下键盘监听:在游戏循环中,判
- 前言从层次上来看,对象的复制可以简单地分为浅复制和深复制,顾名思义,浅复制是指只复制一层对象的属性,不会复制对象中的对象的属性,对象的深复制
- 在php中判断一个文件或目录是否存在,大家通常都会想到is_file和file_exists两个函数。但这两个函数再判断一个远程url文件是
- 1 拷贝下面的代码到一个文件,并命名为forkcore.pyimport osimport threadingimport selectim
- sort 包源码解读前言我们的代码业务中很多地方需要我们自己进行排序操作,go 标准库中是提供了 sort 包是实现排序功能的,这里来看下生
- 1. 截取GB2312中文字符串 <?php //截取中文字符串 function mysubstr($str, $star
- “ 这是MySQL系列笔记的第十三篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者
- 本文实例为大家分享SQL SERVER数据库备份的具体代码,供大家参考,具体内容如下/** 批量循环备份用户数据库,做为数据库迁
- 老师罚学生抄写英文单词,结果学生给抄成这样……
- 在前面的文章 Python 计算机视觉(十五)—— 图像特效处理 中我已经介绍了大部分的图像的特效处理,但还是忽略了油画特效的处理,在本篇文
- Python错误SyntaxError: unexpected EOF while parsing含义是解释器到底了都没找到它要找到的东西出
- Sql Server 中一个非常强大的日期格式化函数: 获得当前系统时间,GETDATE(): 2008年01月08日 星期二 14:59
- 引言为了深入学习 kube-scheduler,本系从源码和实战角度深度学 习kube-scheduler,该系列一共分6篇文章,如下:ku
- Scrapy批量运行爬虫文件的两种方法:1、使用CrawProcess实现https://doc.scrapy.org/en/latest/
- 一、基本数据类型前缀数据类型数据类型简写ArrayarrBooleanblnBytebytCharchrDateTimedtmDecimal
- 组合字面量组合字面量是最直接方式初始化Go对象,假设定义了Book类型,使用字面量初始化代码如下:type Book struct { &n
- 本文实例讲述了Python基于列表模拟堆栈和队列功能。分享给大家供大家参考,具体如下:之前的文章https://www.jb51.net/a
- 数据库是应用开发中必须要掌握的技巧,通常在数据库开发过程中,会有两种不同的方式:直接使用SQL语句,这种方式下,直接编写SQL,简单直观,但
- Django 基本命令本节主要是为了让您了解一些django最基本的命令,请尝试着记住它们,并且多多练习下1. 新建一个 django pr