Python海龟绘图,绘出最靓丽的景色

Karen110
• 阅读 1514

Hello,大家好。我是Python进阶者。

前言

大家平时用程序画图的时候是不是都觉得比较棘手了,今天给大家介绍个神奇的画图模块-----turtle。它可以通过一些指令让画笔任意移动,可以说是很智能了。

导入模块

import turtle

turtle基本用法

一、设置画布大小

要想画图就要先有画布,不然没法让图显示,我们可以先设置画布大小:

turtle.screensize(width,height,color) #设置宽度 高度 颜色

二、设置画布坐标

我们画图不光要设置画布,还要对画布的容器主界面进行设置,不然主界面显示不了,画布自然也不会显示。

turtle.setup(width,height, startx,starty) #设置宽度 高度 开始x坐标 开始y坐标

三、显示主界面

这个跟tkinter显示主界面有点相似,也是使用mainloop()方法才可以显示界面:


import turtle
turtle.Screen().title('绘图工具') #设置绘图窗口的标题
turtle.screensize(400,400, "red") #画布大小背景颜色
turtle.setup(width=600,height=600, startx=300, starty=50) #绘图窗口的大小和起始坐标
turtle.mainloop() #显示主界面

t = turtle.Pen() #钢笔
t.shape("turtle") #海龟的形状:arrow,turtle,circle,square,triangle,classic
t.resizemode()  #大小调整模式:auto,user,noresize
turtle.bgcolor('black')#背景颜色

Python海龟绘图,绘出最靓丽的景色

四、设置绘图画笔

因为海龟绘图是以画笔来进行绘画的,所以我们得生成一个画笔来进行画画。我们需要对一个画笔的大小和颜色来进行设置:


turtle.pencolor('green')  #设置画笔的颜色为绿色,默认黑色  color()
turtle.pensize(1) #设置画笔大小 turtle.width()
turtle.speed() #设置画笔速度 范围是[0,10]
#也可以使用turtle.Pen()

Python海龟绘图,绘出最靓丽的景色

这样就生成了我们的第一个箭头,海龟绘图就是通过这个箭头的移动轨迹来达到绘图目的的。

五、基本绘图命令

接下来我们让这个箭头动起来,给他一点灵魂,免得它像稻草人一样一动不动,说干就干。

1.前进


turtle.forward(100) #向前进100个像素
turtle.fd(100)

2.后退


turtle.backward(200) #向后退200个像素,下方方法相同
turtle.back(200)
turtle.bk(200)

3.移动到

turtle.goto(100,200) #直接移动到坐标为(100,200)的位置,下方效果一样
turtle.setpos(100,200)
turtle.setposition(100,200)

4.左移


turtle.left(50)#向左移动50个像素
turtle.lt(50)

5.右移


turtle.right(60)#向右移动60个像素
turtle.rt(60)

6.准备移动


turtle.penup()
turtle.Pen().up()

7.暂停移动


turtle.pendown()
turtle.Pen().down()

8.画圆


turtle.circle(半径, 弧度, 内置多边形数)
turtle.dot(int) #也可以画圆

9.移动x轴

turtle.setx(100) #x轴移动100个像素

10.移动y轴

turtle.sety(100) #y轴移动100个像素

11.设置当前朝向的角度


turtle.setheading(90)#当前角度为90
turtle.seth(90)
在standard模式下逆时针(北方) 它模式下顺时针(东方)

12.设置当前画笔位置为原点

turtle.home()

Python海龟绘图,绘出最靓丽的景色

我们可以看到海龟最后停留的位置和画笔最初的落脚点的位置,代码如下:

import turtle
import time
t=turtle.Pen()
t.shape('turtle')
t.pencolor('green')
turtle.bgcolor('gray')
t.width=3
time.sleep(1)
t.penup()#准备移动
t.forward(100)#向前进100个像素
time.sleep(1)
t.backward(200) #向后退200个像素
time.sleep(1)
t.goto(100,200) #直接移动到坐标为(100,200)的位置
time.sleep(1)
t.left(50)#向左移动50个像素
time.sleep(1)
t.right(60)#向右移动60个像素
time.sleep(1)
t.penup()#准备移动
t.setx(100)#x轴移动100个像素
time.sleep(1)
t.sety(100) #y轴移动100个像素
turtle.seth(90)
turtle.home()
turtle.mainloop() #主界面一直保持,不退出

我们也可以将海龟的运行轨迹显示出来:

Python海龟绘图,绘出最靓丽的景色

turtle.Screen().title('绘图工具') #设置绘图窗口的标题
turtle.screensize(400,400, "red") #画布大小背景颜色
turtle.setup(width=600,height=600, startx=300, starty=50) #绘图窗口的大小和起始坐标
turtle.pensize(1)
turtle.pencolor('green') #画笔颜色
turtle.speed(2)
turtle.forward(100) #前进100
time.sleep(1)
turtle.setposition(100,100)  #移动到位置(100,100)
time.sleep(1)
turtle.bk(100) #后退100
time.sleep(1)
turtle.circle(100,100,5) #画多边形轮廓
time.sleep(1)
turtle.dot(50) #画圆
time.sleep(1)
turtle.setx(100) #移动x轴

13.复制当前图形

turtle.stamp()

14.清除当前图形

turtle.clearstamp()

15.清除多个图形

turtle.clearstamps()

16.撤销操作

turtle.undo()

17.获取当前海龟坐标

turtle.position()
turtle.pos()

18.获取海龟当前坐标与(x,y)的夹角

tutrle.towards(x,y)

19.获取x坐标

tutrle.xcor()

20.获取y坐标

tutrle.ycor()

21.获取箭头的朝向

tutrle.heading()

22.获取箭头坐标和设置的坐标的距离

turtle.distance(x,y)

23、清空当前绘图窗口,海龟状态不变


turtle.clear()
turtle.clearscreen()

24.清空窗口,重新设置海龟状态


turtle.reset()
turtle.resetscreen()

25.判断当前海龟是否可见

turtle.isvisible()

26.写入文本

turtle.write(text,font)

27.绘制填充颜色

turtle.fillcolor('red')

28.判断画笔是否落下

turtle.isdown (注意:没有isup方法)

29.隐藏海龟

turtle.hideturtle()
turtle.ht()

30.显示海龟

turtle.showturtle()
turtle.st()

31.填充颜色

turtle.fillcolor('black')

32.开始填充

turtle.begin_fill()

33.结束填充

turtle.end_fill()

34.设置圆的度数,默认值为360度

turtle.degrees(fullcircle=360.0)

35.将圆的度数设置成2π

turtle.radians()

Python海龟绘图,绘出最靓丽的景色

turtle.Screen().title('绘图工具') #设置绘图窗口的标题
t=turtle.screensize(400,400, "red") #画布大小背景颜色
turtle.setup(width=600,height=600, startx=300, starty=50) #绘图窗口的大小和起始坐标
turtle.pensize(1)
turtle.pencolor('green')
turtle.speed(2)
turtle.forward(100)
turtle.circle(40)
id=turtle.stamp()    #生成id
turtle.goto(100,200) #移动到(100,200)
turtle.clearstamp(id) #删除id
turtle.undo() #撤销操作
print(turtle.pos()) #海龟当前坐标
print(turtle.towards(100,100)) #当前坐标与设置的坐标的夹角
print(turtle.xcor(),turtle.ycor()) #获取x,y坐标
print(turtle.heading())#获取箭头朝向
print(turtle.distance(100,100))#当前坐标与设置的坐标的距离
turtle.clear()  #清空绘图窗口
turtle.reset() #重新设置海龟状态
turtle.forward(100)#向前进100个像素
if turtle.isvisible():  #判断海龟是否可见,可见则后退300像素
  turtle.back(300)
turtle.write('任性的90后boy')
turtle.fillcolor('blue') #海龟的颜色填充为蓝色
turtle.begin_fill() #开始填充
turtle.goto(100,-100)
turtle.forward(150)
turtle.end_fill() #结束填充
turtle.fillcolor('black') #
turtle.begin_fill() 
turtle.pencolor('yellow')
turtle.circle(40)
turtle.end_fill() 
turtle.mainloop()

这一部分主要讲海龟的运行轨迹的变化过程。

36.海龟的启动和停止

turtle.mainloop()
turtle.done

37.设置海龟的模式

turtle.mode(mode) standard  逆时针   它  顺时针  world

38.设置或返回以毫秒为单位的绘图延迟

turtle.delay(delay=None)

39.开始记录多边形的第一个顶点

turtle.begin_poly()

40.停止记录多边形的最后一个顶点

turtle.end_poly()

41.返回最后记录的多边形

turtle.get_poly()

Python海龟绘图,绘出最靓丽的景色


turtle.Screen().title('绘图工具') #设置绘图窗口的标题
t=turtle.screensize(400,400, "red") #画布大小背景颜色
turtle.setup(width=600,height=600, startx=300, starty=50) #绘图窗口的大小和起始坐标
turtle.pensize(1)
turtle.pencolor('green')
turtle.speed(2)
turtle.begin_poly() #开始记录
for i in range(4):
    turtle.forward(100)
    turtle.right(90)
turtle.end_poly() #结束记录
print(turtle.get_poly()) #获取捕获到的绘图坐标
turtle.clear() #清除当前绘图
turtle.mode('它')
turtle.forward(100)
turtle.ht() #隐藏
turtle.left(100)
turtle.delay(delay=100)#每100毫秒绘制一点
turtle.goto(200,50)
turtle.st() #显示
turtle.reset()#回到起点
time.sleep(1)
for x in range(100):
  for y in range(200):
    turtle.forward(100)
    turtle.left(200)
    turtle.goto(x,y) #不断移动位置
    if turtle.pos()==(10,10): #如果当前位置为(10,10)
      turtle.done #销毁窗口
turtle.mainloop()

Python海龟绘图,绘出最靓丽的景色

这里显示了最初绘图的坐标,其实它绘制的是一个矩形。

总结

从这里看出,海龟画图的确是一个很不错的模块,它能十分迅速并且很方便的帮助我们进行绘图,只需要短短几个辨识度比较高的英文进行组合便可以绘制精美的图形。当然它还有很多其它的用法,这里不在一一细说,大家可以慢慢琢磨。

**-----**------**-----**---**** End **-----**--------**-----**-****

往期精彩文章推荐:

Python海龟绘图,绘出最靓丽的景色

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/PbKso-vS_KO5MuAa4v0eHQ,如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Irene181 Irene181
3年前
盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试
大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,
Irene181 Irene181
3年前
深入解析网页结构解析模块beautifulsoup
大家好,我是Python进阶者,今天给大家分享一个网页结构解析模块beautifulsoup。前言beautifulsoup(以下简称bs),是一款网页结构解析模块,它支持传统的Xpath,css selector语法,可以说很强大了,下面我们就来着重介绍下它的用法。安装bs可以使用pip或者easy\install安装,方便快捷。pip in
Wesley13 Wesley13
3年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Python有趣的小案例
导入turtle模块模块是python自带的工具箱,这里将工具箱导入就能使用了turtle模块是python用来画图的工具箱importturtle将turtle里的工具拿出来,赋给t变量照猫画虎用就是了,这些东西要到很后面才能理解t
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这