Python海龟绘图,绘出最靓丽的景色
回复“书籍”即可获赠Python从入门到进阶共10本电子书
Hello,大家好。我是Python进阶者。
前言
大家平时用程序画图的时候是不是都觉得比较棘手了,今天给大家介绍个神奇的画图模块-----turtle。它可以通过一些指令让画笔任意移动,可以说是很智能了。
导入模块
import turtleturtle基本用法
一、设置画布大小
要想画图就要先有画布,不然没法让图显示,我们可以先设置画布大小:
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()

这样就生成了我们的第一个箭头,海龟绘图就是通过这个箭头的移动轨迹来达到绘图目的的。
五、基本绘图命令
接下来我们让这个箭头动起来,给他一点灵魂,免得它像稻草人一样一动不动,说干就干。
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)#当前角度为90turtle.seth(90)在standard模式下逆时针(北方) 它模式下顺时针(东方)
12.设置当前画笔位置为原点
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轴
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()
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()
这一部分主要讲海龟的运行轨迹的变化过程。
36.海龟的启动和停止
turtle.mainloop()turtle.done
37.设置海龟的模式
turtle.mode(mode) standard 逆时针 它 顺时针 world38.设置或返回以毫秒为单位的绘图延迟
turtle.delay(delay=None)39.开始记录多边形的第一个顶点
turtle.begin_poly()40.停止记录多边形的最后一个顶点
turtle.end_poly()41.返回最后记录的多边形
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学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
评论
