Python中turtle的基础用法
一、turtle的简单介绍
turtle(海龟),是python自带的的一个基于thinker的一个绘图标准库,无需下载即可使用,能够通过坐标控制,抬笔落笔等操作绘制自己需要的图形。
二、turtle基础
1、在使用turtle时,首先要做的是导入turtle库
第一种导入方式: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库中还有许多的用法没有涉及,但是对于初学者来说,掌握上面的经常使用的画笔用法是足够了。也能够为后续的学习奠定坚实的基础。
我知道我的博客有很多的不足,麻烦阅读者给我建议,我也需要逐渐的改进和提升!让我们共同进步吧!