赞
踩
turtle(海龟),是python自带的的一个基于thinker的一个绘图标准库,无需下载即可使用,能够通过坐标控制,抬笔落笔等操作绘制自己需要的图形。
第一种导入方式:from turtle import * 从turtle库中导出所有的方法和属
注意:在使用该方法时无需添加任何的对象,就可以直接使用turtle库中的方法
第二种导入方式:import turtle as t
(as t 是turtle太长了,使用不太方便,取个别名 t 使用 更加方便,你可以将t理解为一个自定义的对象,之后可以通过它调用turtle的方法)
下面我们分别使用两种导入方式来实现同一功能:
第一种:
- from turtle import *
-
- forward(200) # 沿着当前方向前进200像素
- circle(80) # 绘制一个半径为80像素的圆
- goto(0,0) # 并且回到原点
- done() # 维持界面
第二种:
- import turtle as t
-
- t.forward(200) # 沿着当前方向前进200像素
- t.circle(80) # 画一个半径为80像素的圆
- t.goto(0,0) # 并且回到原点
- t.done() # 维持界面
2、turtle的常用方法
-
- # pensize()用于设置画笔的宽度,里面直接放整数即可。
- """
- setup() 用于新建画布
- setup(width,height,startx,starty)
- width: 代表画布宽度,若是整数则代表有多少像素,若是小数则代表占屏幕的比率
- height: 代表画布的高度,若是整数则代表有多少像素,若是小数则代表占屏幕的比率
- startx: 正值则代表距离屏幕左边界多少像素,负值则代表距离屏幕右边界有多少像素
- starty: 正值则代表距离屏幕上边界多少像素,负值则代表距离屏幕下边界有多少像素
- """
- #例如:
- import turtle
- turtle.setup(width=0.75,height=0.85,startx=100,starty=0)
- turtle.done()
3、有关画笔的相关属性及问题的介绍
画笔:在画布的中央默认有x,y轴的坐标系,坐标原点的位置在画布正中央,坐标原点也是画笔的初始位置。画笔的初始方向为x轴的正方向。
以下我们介绍画笔的常用命令(用于设置画笔的各类属性,和操作画笔绘图):
基础阶段设置和操作画笔的主要命令如下:
设置笔的颜色:pencolor() 例如:pencolor("red") 设置画笔为红色
设置笔的宽度:pensize() 例如:pensize(5) 设置画笔宽度为5px
抬笔:penup() 简写:pu()
落笔:pendown() 简写: pd()
沿当前方向前进:forward() 简写:fd()
逆时针方向旋转:left() 简写: lt() 例如:left(180°) 画笔方向逆时针旋转180°
顺时针方向旋转:right() 简写:rt() 例如:right(90°) 画笔方向顺时针旋旋90°
案例一:画一个边长为180像素的正方形(要求下边为绿色,右边为红色,上边为蓝色,左边为黄色)
- import turtle as t
-
- # 绿、红、蓝、黄
- t.pencolor("green") #设置画笔的颜色为绿色
- t.forward(180) #前进180px
-
- t.left(90) #逆时针旋转90°
- t.pencolor("red") #设置画笔的颜色为红色
- t.forward(180) #向前180px
-
- t.left(90) #逆时针方向旋转90°
- t.pencolor("blue") #设置画笔的颜色为蓝色
- t.forward(180) #向前180px
-
- t.left(90) #逆时针旋转90°
- t.pencolor("yellow") #设置画笔的颜色为黄色
- t.forward(180) #前进180px
-
- t.done() #绘制完成后维持结果界面

绘制的正方形的效果如下:
案例二:
接下来我来介绍一个非常实用的功能:颜色填充
即:fillcolor()、begin_fill()、end_color()三者的应用
接下来我们在案例一的基础之上对所画的正方形填充pink颜色
- """
- 主要在正确的位置添加以下三行代码:
- t.fillcolor("pink") #设置填充颜色为pink
- t.begin_fill() #开始填充
- t.end_fill() #结束填充
- """
- import turtle as t
-
- # 绿、红、蓝、黄
-
- t.pencolor("green")
- t.fillcolor("pink") # 设置填充颜色为 pink
- t.begin_fill() # 在当前位置开启填充(就是在画笔没有移动前开始)
- t.forward(180)
- t.left(90)
- t.pencolor("red")
- t.forward(180)
- t.left(90)
- t.pencolor("blue")
- t.forward(180)
- t.left(90)
- t.pencolor("yellow")
- t.forward(180)
- t.end_fill() # 在画笔完成所有的移动后结束填充
- t.done()

效果如下:
案例三:绘制一个与下图一样的正方形(边长180px),并且在最后隐藏画笔(hideturtle()即可实现隐藏画笔):
分析:本题首先要使用“red”颜色开启填充,然后沿着x轴正方向移动180px,再左转90°前进180px
然后再回原点,就完成绘制右下角的红色三角形 。此时的画笔朝向x轴正向,同样需要先使
用“yellow”颜色开启填充,先左转再前进180px,再右转90°再前进180x,然后回归原点。
实现代码:
- import turtle as t #导入海龟画图的第三方模块
- t.fillcolor("red") #设置填充颜色为红色
- t.begin_fill() #开始填充
- t.forward(180) #在起始位置沿x轴正方向移动180像素
- t.left(90) #海龟逆时针方向旋转90度
- t.fd(180) #前进180px
- t.home() #使画笔回归坐标原点
- t.end_fill() #结束填充
-
-
- t.fillcolor("yellow") #设置填充颜色为黄色
- t.begin_fill() #开始填充
- t.lt(90) #左转90°
- t.fd(180) #前进180px
- t.rt(90) #右转90°
- t.fd(180) #前进180px
- t.home() #回到坐标原点
- t.end_fill() #填充结束
- t.hideturtle() #隐藏画笔
- t.done() #使界面结果一直存在,不会立刻关闭

介绍以下:circle() 是turtle用来画圆使使用的
t.circle(radius,extent=None)
radius: 是圆的半径,如果半径为正值,则圆心在点的左侧,为负则在圆心的右侧
extent: 就是绘制的角度,它的默认值为360°(该参数可以没有),绘制的角度值如果为正的话就朝着画笔朝向的那一侧从该点画圆,若角度为负的话则是朝向画笔反方向那一侧从该点画圆
- """
- 注释真的非常重要,请仔细分析,并去认真的理解注释所叙述的内容。
- """
-
- #圆的绘制
- import turtle as t
- t.pensize(10)
-
- t.circle(100,360) # r =100 > 0 所以,圆心在画笔的左侧,由于此时画笔朝向x轴的正方向,所以圆心在画笔的上方extent(角度)=360 > 0 所以,从画笔正向那一侧在该点起始画圆
- t.circle(-100,-360) # r = -100 < 0 所以,圆心在画笔的右侧,由于此时画笔朝向x轴的正方形,则可得圆心在画笔的下方extent(角度)=-360 < 0 所以,从画笔的反方向那一侧在该点开始画圆
以上代码的实现图如下:
分析:由于画笔的指向是x轴的正方向,所以其左侧起始就是其上侧,其右侧起始就是其下侧。t.circle(100,360)其半径r=100 > 0,所以就意味着其圆心在画笔的左侧(此处也就是上侧),即A点。 extent=360>0也就意味着会从画笔正方向那一侧以A点为圆心,从画笔所在位置开始绘制一个圆。 t.circle(-100,-360) 半径 r < 0 所以其圆心在画笔的右侧(此处即使下侧)B点,由于extent(角度) < 0所以会从画笔方向的反侧,以B为圆心,从画笔所在处画圆。
案例五:绘制下图一样的奥运五环(综合案例)
- import turtle as t
- t.pensize(5) # 设置画笔的宽度
- t.speed(8) # 设置画笔的速度
-
- #蓝色圈
- t.color("blue") # 和pencolor()同样可以设置画笔的颜色
- t.circle(60,360)
-
-
- #黑色圈
- t.penup() # 抬笔
- t.goto(90,0) # 移动画笔至(90,0点)
- t.pendown()
- t.pencolor("black")
- t.circle(60,360)
-
-
- #红色圈
- t.penup()
- t.goto(182,0)
- t.pendown()
- t.color("red")
- t.circle(60,360)
-
- #黄圈
- t.penup()
- t.goto(140,-70)
- t.pendown()
- t.color("yellow")
- t.circle(60,360)
-
- #绿圈
- t.penup()
- t.goto(35,-70)
- t.pendown()
- t.pencolor("green")
- t.circle(60,360)
-
- t.done()

以上对turtle定义的介绍是次要,重要的是要懂对turtle的导入,以及能够熟练的使用以上所列出的画笔的用法,能够用其画出指定的且个性化的图形,以上内容随然不够完整,turtle库中还有许多的用法没有涉及,但是对于初学者来说,掌握上面的经常使用的画笔用法是足够了。也能够为后续的学习奠定坚实的基础。
我知道我的博客有很多的不足,麻烦阅读者给我建议,我也需要逐渐的改进和提升!让我们共同进步吧!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。