。
大家平时用程序画图的时候是不是都觉得比较棘手了,今天给大家介绍个神奇的画图模块-----turtle。它可以通过一些指令让画笔任意移动,可以说是很智能了。
import 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')#背景颜色
因为海龟绘图是以画笔来进行绘画的,所以我们得生成一个画笔来进行画画。我们需要对一个画笔的大小和颜色来进行设置:
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)#当前角度为90
turtle.seth(90)
在standard模式下逆时针(北方) 它模式下顺时针(东方)turtle.home()
我们可以看到海龟最后停留的位置和画笔最初的落脚点的位置,代码如下:
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() #主界面一直保持,不退出我们也可以将海龟的运行轨迹显示出来:

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轴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() #生成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()这一部分主要讲海龟的运行轨迹的变化过程。
turtle.mainloop()
turtle.doneturtle.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爬虫与数据挖掘 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!