Python--turtle绘图模块讲解

引言:

turtle(海龟)模块,我们是用它来进行画图的,基本上就是画简单的直线,点,和曲线。 

你可以把它想成一个小海龟,在沙滩上行走,然后留下的各种痕迹,使用Turtle模块可以绘制很多精美的图形。

1. 画布(canvas)

画布就是我们画图的空白空间,可以修改大小和初始设置

如果我们用下面的Pen(画笔)函数,他会自动创建一个画布

t = turtle.Pen()

这是我们可以看到画布创建了,而在画布的中心会存在一个箭头,就是初始位置,也是我们的小海龟

绘图窗口的原点(0,0)在正中间。默认情况下,海龟向正右方移动

那么如果我们要修改画布大小呢?

python为我们提供了函数

turtle.screensize(canvwidth=None, canvheight=None, bg=None)
  • canvwidth:画布的宽度(单位:像素)
  • canvheight:画布的高度(单位:像素)
  • .bg:背景颜色
  • 若不设置值,默认参数为(400,300,None)  用Pen创建的就是默认大小

假如你不想设置长宽,只想按照屏幕大小来设定,别着急python还有一个函数

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
  • width,height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
  • (startx,starty):这一坐标表示矩形窗口左上角顶点的位置。如果为空,则窗口位于屏幕中心

2.运动

 

在设置好画布之后,就要画图案了,那么请注意,turtle模块的画图,都是以箭头(小海龟)为基础的,

在我们要画图的时候,运动操作都是在当前箭头位置基础上经行修改

操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种为运动命令,一种为画笔控制命令

下面为运动命令:

t.forward(distance向当前画笔方向移动distance像素长度

turtle.left(degree)  逆时针旋转degree度 

 

turtle.goto(x,y)  将画笔移动到坐标为x,y的位置

注意移动的时候是会有痕迹的

就介绍这些,下面我们给出运动命令操作表⬇

forward(d)

向前移动距离,d代表距离

backward(d)

向后移动距离,d代表距离

right(degree)

向右转动多少度

left(degree)

向左转动多少度

goto(x,y)

将画笔移动到坐标为(x,y)的位置

speed(speed)

画笔绘制的速度范围[0,10]整数

 circle(radius, extent)

 

绘制一个圆形,其中radius为半径,extent为度数,例如若extent为180,则画一个半圆;如要画一个圆形,可不必写第二个参数

setx( )

将当前x轴移动到指定位置

sety( )

将当前y轴移动到指定位置

home()

设置当前画笔位置为原点,朝向东。

dot(r)

绘制一个指定直径和颜色的圆点

 

而如果要移动画笔而不留痕迹,比如在其他位置进行绘画,可以用

t.up()   画笔抬起,移动时不绘制图形

可以看到这时候后退是没有痕迹的

这就涉及到了画笔控制命令

down()

画笔落下,移动时绘制图形

up()

画笔抬起,移动时不绘制图形

setheading(degree)

海龟朝向,degree代表角度

reset()

恢复所有设置

pensize(width)

画笔的宽度

pencolor(colorstring)

画笔的颜色

fillcolor(colorstring)

绘制图形的填充颜色

turtle.filling() 返回当前是否在填充状态
turtle.begin_fill() 准备开始填充图形
turtle.end_fill() 填充完成
turtle.hideturtle() 隐藏画笔的turtle形状
turtle.showturtle() 显示画笔的turtle形状

 

海龟向右(right)转,或者让它后退(backward)。我们可以用向上(up)来把笔从纸上抬起来(换句话说就是让海龟停止作画),用向下(down)来开始作画。

这样可以很简单的画出一个平行线

 

最后还有几个控制画布的命令

turtle.clear()

清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset()

清空窗口,重置turtle状态为起始状态

turtle.undo()

撤销上一个turtle动作

stamp()

绘制(复制)当前图形

   注意clear和reset的区别,clear(画笔)海龟还是在原位置不变,只清除屏幕,reset则是全部重置

扩展知识:

我们可以创建多个画笔,来分别进行不同操作

实列演示:

 

绘制五角星

import turtle  #导入画图模块
import time  #导入时间模块

t = turtle.Turtle()
turtle.screensize(1000,1000) #定义画布大小
t.pensize(10)  # 定义画笔的宽度
t.pencolor("yellow")  # 定义画笔颜色
t.fillcolor("red")  # 定义填充颜色
 
t.begin_fill()  # 开始填充图像
 
for i in range(5):  # 五角星循环五次
    t.forward(500)
    t.right(144)  # 右转144°
t.end_fill()  # 停止填充
time.sleep(2)  # 阻塞两秒
 
t.penup()  # 提起笔,移动时不绘制图形
t.goto(-150, 120)  # 将画笔移动到某坐标点
t.color("violet")
t.write("Z小旋", font=('Arial', 40, 'normal'))  # 设置文字和字体

效果图

 

绘制心形

import turtle

t = turtle.Turtle()
def curvemove():
    for i in range(200):
        t.right(1)
        t.forward(1)
t.speed(5)#设置画笔速度
t.color('red','pink')        
t.begin_fill() #开始填充
t.left(140)
t.forward(111.65)
curvemove()
t.left(120)
curvemove()
t.forward(111.65)
t.end_fill() #结束填充
t.up() #抬起画笔
t.goto(-250, 100)  # 将画笔移动到某坐标点
t.color("violet")
t.write("Z小旋", font=('Arial', 40, 'normal'))  # 设置文字和字体

 

效果图