首页 > 数据库 > 数据库开发技术 > Python海龟绘图,绘出最靓丽的景色
回复“书籍”即可获赠Python从入门到进阶共10本电子书
大家平时用程序画图的时候是不是都觉得比较棘手了,今天给大家介绍个神奇的画图模块-----turtle。它可以通过一些指令让画笔任意移动,可以说是很智能了。
import turtle要想画图就要先有画布,不然没法让图显示,我们可以先设置画布大小:
turtle.screensize(width,height,color) #设置宽度 高度 颜色我们画图不光要设置画布,还要对画布的容器主界面进行设置,不然主界面显示不了,画布自然也不会显示。
turtle.setup(width,height, startx,starty) #设置宽度 高度 开始x坐标 开始y坐标这个跟tkinter显示主界面有点相似,也是使用mainloop()方法才可以显示界面:
import turtleturtle.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,classict.resizemode() #大小调整模式:auto,user,noresizeturtle.bgcolor('black')#背景颜色

因为海龟绘图是以画笔来进行绘画的,所以我们得生成一个画笔来进行画画。我们需要对一个画笔的大小和颜色来进行设置:
turtle.pencolor('green') #设置画笔的颜色为绿色,默认黑色 color()turtle.pensize(1) #设置画笔大小 turtle.width()turtle.speed() #设置画笔速度 范围是[0,10]#也可以使用turtle.Pen()

这样就生成了我们的第一个箭头,海龟绘图就是通过这个箭头的移动轨迹来达到绘图目的的。
接下来我们让这个箭头动起来,给他一点灵魂,免得它像稻草人一样一动不动,说干就干。
turtle.forward(100) #向前进100个像素turtle.fd(100)
turtle.backward(200) #向后退200个像素,下方方法相同turtle.back(200)turtle.bk(200)
turtle.goto(100,200) #直接移动到坐标为(100,200)的位置,下方效果一样turtle.setpos(100,200)turtle.setposition(100,200)
turtle.left(50)#向左移动50个像素turtle.lt(50)
turtle.right(60)#向右移动60个像素turtle.rt(60)
turtle.penup()turtle.Pen().up()
turtle.pendown()turtle.Pen().down()
turtle.circle(半径, 弧度, 内置多边形数)turtle.dot(int)
turtle.setx(100) #x轴移动100个像素turtle.sety(100) #y轴移动100个像素turtle.setheading(90)#当前角度为90turtle.seth(90)在standard模式下逆时针(北方) 它模式下顺时针(东方)
turtle.home()
我们可以看到海龟最后停留的位置和画笔最初的落脚点的位置,代码如下:
import turtleimport timet=turtle.Pen()t.shape('turtle')t.pencolor('green')turtle.bgcolor('gray')t.width=3time.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() #主界面一直保持,不退出
我们也可以将海龟的运行轨迹显示出来:

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) #前进100time.sleep(1)turtle.setposition(100,100) #移动到位置(100,100)time.sleep(1)turtle.bk(100) #后退100time.sleep(1)turtle.circle(100,100,5) #画多边形轮廓time.sleep(1)turtle.dot(50) #画圆time.sleep(1)turtle.setx(100) #移动x轴
turtle.stamp()turtle.clearstamp()turtle.clearstamps()turtle.undo()turtle.position()turtle.pos()
tutrle.towards(x,y)tutrle.xcor()tutrle.ycor()tutrle.heading()turtle.distance(x,y)turtle.clear()turtle.clearscreen()
turtle.reset()turtle.resetscreen()
turtle.isvisible()turtle.write(text,font)turtle.fillcolor('red')turtle.isdown (注意:没有isup方法)turtle.hideturtle()turtle.ht()
turtle.showturtle()turtle.st()
turtle.fillcolor('black')turtle.begin_fill()turtle.end_fill()turtle.degrees(fullcircle=360.0)turtle.radians()
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() #生成idturtle.goto(100,200) #移动到(100,200)turtle.clearstamp(id) #删除idturtle.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()
这一部分主要讲海龟的运行轨迹的变化过程。
turtle.mainloop()turtle.done
turtle.mode(mode) standard 逆时针 它 顺时针 worldturtle.delay(delay=None)turtle.begin_poly()turtle.end_poly()turtle.get_poly()
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()

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

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
原文作者:Python爬虫与数据挖掘;如有侵权,请联系管理员删除。