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

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

前言

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

导入模块

import turtle

turtle基本用法

一、设置画布大小

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

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

二、设置画布坐标

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

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

三、显示主界面

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

1 2import turtle 3turtle.Screen().title('绘图工具') #设置绘图窗口的标题 4turtle.screensize(400,400, "red") #画布大小背景颜色 5turtle.setup(width=600,height=600, startx=300, starty=50) #绘图窗口的大小和起始坐标 6turtle.mainloop() #显示主界面 7 8t = turtle.Pen() #钢笔 9t.shape("turtle") #海龟的形状:arrow,turtle,circle,square,triangle,classic 10t.resizemode() #大小调整模式:auto,user,noresize 11turtle.bgcolor('black')#背景颜色

四、设置绘图画笔

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

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

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

五、基本绘图命令

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

1.前进

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

2.后退

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

3.移动到

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

4.左移

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

5.右移

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

6.准备移动

1 2turtle.penup() 3turtle.Pen().up()

7.暂停移动

1 2turtle.pendown() 3turtle.Pen().down()

8.画圆

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

9.移动x轴

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

10.移动y轴

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

11.设置当前朝向的角度

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

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

turtle.home()

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

1import turtle 2import time 3t=turtle.Pen() 4t.shape('turtle') 5t.pencolor('green') 6turtle.bgcolor('gray') 7t.width=3 8time.sleep(1) 9t.penup()#准备移动 10t.forward(100)#向前进100个像素 11time.sleep(1) 12t.backward(200) #向后退200个像素 13time.sleep(1) 14t.goto(100,200) #直接移动到坐标为(100,200)的位置 15time.sleep(1) 16t.left(50)#向左移动50个像素 17time.sleep(1) 18t.right(60)#向右移动60个像素 19time.sleep(1) 20t.penup()#准备移动 21t.setx(100)#x轴移动100个像素 22time.sleep(1) 23t.sety(100) #y轴移动100个像素 24turtle.seth(90) 25turtle.home() 26turtle.mainloop() #主界面一直保持,不退出

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

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

13.复制当前图形

turtle.stamp()

14.清除当前图形

turtle.clearstamp()

15.清除多个图形

turtle.clearstamps()

16.撤销操作

turtle.undo()

17.获取当前海龟坐标

1turtle.position() 2turtle.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、清空当前绘图窗口,海龟状态不变

1 2turtle.clear() 3turtle.clearscreen()

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

1 2turtle.reset() 3turtle.resetscreen()

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

turtle.isvisible()

26.写入文本

turtle.write(text,font)

27.绘制填充颜色

turtle.fillcolor('red')

28.判断画笔是否落下

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

29.隐藏海龟

1turtle.hideturtle() 2turtle.ht()

30.显示海龟

1turtle.showturtle() 2turtle.st()

31.填充颜色

turtle.fillcolor('black')

32.开始填充

turtle.begin_fill()

33.结束填充

turtle.end_fill()

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

turtle.degrees(fullcircle=360.0)

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

turtle.radians()

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

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

36.海龟的启动和停止

1turtle.mainloop() 2turtle.done

37.设置海龟的模式

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

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

turtle.delay(delay=None)

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

turtle.begin_poly()

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

turtle.end_poly()

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

turtle.get_poly()

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

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

总结

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

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

往期精彩文章推荐:

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

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

盘点一款Python二级考试模拟软件,带你轻松过关二级Python考试

大家好,我是Python进阶者。今天给大家讲的这个软件,主要是想让大家通过这个软件能将自己的Python基础进一步提高。一、前言相信有些小伙伴学习Python有一段时日,但是又不知道自己的Python基础学的如何,这个时候就需要一款神器来检测一下自己的Python基础了。要想检测自己的Python功力最直观的方法当然是做题了,至于做什么题了我们就不得而知了,

深入解析网页结构解析模块beautifulsoup

大家好,我是Python进阶者,今天给大家分享一个网页结构解析模块beautifulsoup。前言beautifulsoup(以下简称bs),是一款网页结构解析模块,它支持传统的Xpath,css selector语法,可以说很强大了,下面我们就来着重介绍下它的用法。安装bs可以使用pip或者easy\install安装,方便快捷。pip in

4cast

4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:

Python之time模块的时间戳、时间字符串格式化与转换

Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y