Python--turtle绘图模块讲解
引言:turtle(海龟)模块,我们是用它来进行画图的,基本上就是画简单的直线,点,和曲线。你可以把它想成一个小海龟,在沙滩上行走,然后留下的各种痕迹,使用Turtle模块可以绘制很多精美的图形。1. 画布(canvas)画布就是我们画图的空白空间,可以修改大小和初始设置如果我们用下面的Pen(画笔)函数,他会自动创建一个画布t = turtle.Pen()这...
引言:
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像素长度 = t.fd(distance)

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

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

注意移动的时候是会有痕迹的
就介绍这些,下面我们给出运动命令操作表⬇
|
forward(d)/fd(d) |
向前移动距离,d代表距离 |
|
backward(d)/bk(d) |
向后移动距离,d代表距离 |
|
right(degree)/rt(d) |
向右转动多少度 |
|
left(degree)/lt(d) |
向左转动多少度 |
|
goto(x,y) |
将画笔移动到坐标为(x,y)的位置 |
|
speed(speed) |
画笔绘制的速度范围[0,10]整数 |
|
circle(radius, extent) |
绘制一个圆形,其中radius为半径,extent为度数,例如若extent为180,则画一个半圆;如要画一个圆形,可不必写第二个参数 |
|
setx( ) |
将当前x轴移动到指定位置,y轴坐标不变 |
|
sety( ) |
将当前y轴移动到指定位置,x轴坐标不变 |
|
home() |
设置当前画笔位置为原点,朝向东。 |
|
dot(r) |
绘制一个指定直径和颜色的圆点 |
| setheading( to_angle)/turtle.seth(d) | 设置小海龟当前行进方向角度为to_angle,该角度是实际的角度值。 to_angle :角度的整数值。 |
而如果要移动画笔而不留痕迹,比如在其他位置进行绘画,可以用
t.up() 画笔抬起,移动时不绘制图形

可以看到这时候后退是没有痕迹的
这就涉及到了画笔控制命令
|
down() |
画笔落下,移动时绘制图形 |
|
up() |
画笔抬起,移动时不绘制图形 |
|
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')) # 设置文字和字体
效果图

更多推荐



所有评论(0)