首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python海龟绘图,绘出最靓丽的景色

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

作者头像
Python进阶者
发布2021-07-27 15:40:51
发布2021-07-27 15:40:51
2.2K0
举报

前言

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

导入模块

代码语言:javascript
复制
import turtle

turtle基本用法

一、设置画布大小

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

代码语言:javascript
复制
turtle.screensize(width,height,color) #设置宽度 高度 颜色

二、设置画布坐标

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

代码语言:javascript
复制
turtle.setup(width,height, startx,starty) #设置宽度 高度 开始x坐标 开始y坐标

三、显示主界面

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

代码语言:javascript
复制
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')#背景颜色

四、设置绘图画笔

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

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

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

五、基本绘图命令

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

1.前进
代码语言:javascript
复制
turtle.forward(100) #向前进100个像素
turtle.fd(100)
2.后退
代码语言:javascript
复制
turtle.backward(200) #向后退200个像素,下方方法相同
turtle.back(200)
turtle.bk(200)
3.移动到
代码语言:javascript
复制
turtle.goto(100,200) #直接移动到坐标为(100,200)的位置,下方效果一样
turtle.setpos(100,200)
turtle.setposition(100,200)
4.左移
代码语言:javascript
复制
turtle.left(50)#向左移动50个像素
turtle.lt(50)
5.右移
代码语言:javascript
复制
turtle.right(60)#向右移动60个像素
turtle.rt(60)
6.准备移动
代码语言:javascript
复制
turtle.penup()
turtle.Pen().up()
7.暂停移动
代码语言:javascript
复制
turtle.pendown()
turtle.Pen().down()
8.画圆
代码语言:javascript
复制
turtle.circle(半径, 弧度, 内置多边形数)
turtle.dot(int) #也可以画圆
9.移动x轴
代码语言:javascript
复制
turtle.setx(100) #x轴移动100个像素
10.移动y轴
代码语言:javascript
复制
turtle.sety(100) #y轴移动100个像素
11.设置当前朝向的角度
代码语言:javascript
复制
turtle.setheading(90)#当前角度为90
turtle.seth(90)
在standard模式下逆时针(北方) 它模式下顺时针(东方)
12.设置当前画笔位置为原点
代码语言:javascript
复制
turtle.home()

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

代码语言:javascript
复制
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() #主界面一直保持,不退出

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

代码语言:javascript
复制
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.复制当前图形
代码语言:javascript
复制
turtle.stamp()
14.清除当前图形
代码语言:javascript
复制
turtle.clearstamp()
15.清除多个图形
代码语言:javascript
复制
turtle.clearstamps()
16.撤销操作
代码语言:javascript
复制
turtle.undo()
17.获取当前海龟坐标
代码语言:javascript
复制
turtle.position() 
turtle.pos()
18.获取海龟当前坐标与(x,y)的夹角
代码语言:javascript
复制
tutrle.towards(x,y)
19.获取x坐标
代码语言:javascript
复制
tutrle.xcor()
20.获取y坐标
代码语言:javascript
复制
tutrle.ycor()
21.获取箭头的朝向
代码语言:javascript
复制
tutrle.heading()
22.获取箭头坐标和设置的坐标的距离
代码语言:javascript
复制
turtle.distance(x,y)
23、清空当前绘图窗口,海龟状态不变
代码语言:javascript
复制
turtle.clear()
turtle.clearscreen()
24.清空窗口,重新设置海龟状态
代码语言:javascript
复制
turtle.reset()
turtle.resetscreen()
25.判断当前海龟是否可见
代码语言:javascript
复制
turtle.isvisible()
26.写入文本
代码语言:javascript
复制
turtle.write(text,font)
27.绘制填充颜色
代码语言:javascript
复制
turtle.fillcolor('red')
28.判断画笔是否落下
代码语言:javascript
复制
turtle.isdown (注意:没有isup方法)
29.隐藏海龟
代码语言:javascript
复制
turtle.hideturtle()
turtle.ht()
30.显示海龟
代码语言:javascript
复制
turtle.showturtle()
turtle.st()
31.填充颜色
代码语言:javascript
复制
turtle.fillcolor('black')
32.开始填充
代码语言:javascript
复制
turtle.begin_fill()
33.结束填充
代码语言:javascript
复制
turtle.end_fill()
34.设置圆的度数,默认值为360度
代码语言:javascript
复制
turtle.degrees(fullcircle=360.0)
35.将圆的度数设置成2π
代码语言:javascript
复制
turtle.radians()
代码语言:javascript
复制
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.海龟的启动和停止
代码语言:javascript
复制
turtle.mainloop()
turtle.done
37.设置海龟的模式
代码语言:javascript
复制
turtle.mode(mode) standard  逆时针   它  顺时针  world
38.设置或返回以毫秒为单位的绘图延迟
代码语言:javascript
复制
turtle.delay(delay=None)
39.开始记录多边形的第一个顶点
代码语言:javascript
复制
turtle.begin_poly()
40.停止记录多边形的最后一个顶点
代码语言:javascript
复制
turtle.end_poly()
41.返回最后记录的多边形
代码语言:javascript
复制
turtle.get_poly()
代码语言:javascript
复制
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 -------------------

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python爬虫与数据挖掘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 导入模块
  • turtle基本用法
    • 一、设置画布大小
    • 二、设置画布坐标
    • 三、显示主界面
    • 四、设置绘图画笔
    • 五、基本绘图命令
      • 1.前进
      • 2.后退
      • 3.移动到
      • 4.左移
      • 5.右移
      • 6.准备移动
      • 7.暂停移动
      • 8.画圆
      • 9.移动x轴
      • 10.移动y轴
      • 11.设置当前朝向的角度
      • 12.设置当前画笔位置为原点
      • 13.复制当前图形
      • 14.清除当前图形
      • 15.清除多个图形
      • 16.撤销操作
      • 17.获取当前海龟坐标
      • 18.获取海龟当前坐标与(x,y)的夹角
      • 19.获取x坐标
      • 20.获取y坐标
      • 21.获取箭头的朝向
      • 22.获取箭头坐标和设置的坐标的距离
      • 23、清空当前绘图窗口,海龟状态不变
      • 24.清空窗口,重新设置海龟状态
      • 25.判断当前海龟是否可见
      • 26.写入文本
      • 27.绘制填充颜色
      • 28.判断画笔是否落下
      • 29.隐藏海龟
      • 30.显示海龟
      • 31.填充颜色
      • 32.开始填充
      • 33.结束填充
      • 34.设置圆的度数,默认值为360度
      • 35.将圆的度数设置成2π
      • 36.海龟的启动和停止
      • 37.设置海龟的模式
      • 38.设置或返回以毫秒为单位的绘图延迟
      • 39.开始记录多边形的第一个顶点
      • 40.停止记录多边形的最后一个顶点
      • 41.返回最后记录的多边形
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档