海龟绘图很适合用来引导孩子学习编程,通过编写简短的、简单的程序来创建漂亮的、复杂的视觉效果。而且还可以通过跟随海龟观察到每行代码是如何影响到它的移动,可以很好的帮助我们理解代码的逻辑,也是非常适合孩子学习的。

在绘图区有一只海龟,起始位置原点(0,0),先执行import turtle,在执行turtle.forward(15)可以控制海龟朝向x轴正方向前进15像素,即画出一条线段。

通过组合使用一些指令程序,可以绘制出精美的形状和图案。
一、画布
画布就是海龟的绘图区域范围,可以通过指令修改画布的大小和初始位置

turtle.screensize(canvwidth=None,canvheight=None,bg=None)参数:canvwidth:画布的宽度,canvheight:画布的高度,bg:画布的背景
turtle.setup(width=0.5,height=0.75,startx=None,starty=None)width和height:宽和高,整数表示像素,小数表示占据屏幕的比例;startx和starty:表示矩形窗口左上角顶点的位置,为空,则位于屏幕中心。

二、画笔
画笔默认位于画布中心原点x-y(0,0)位置。

import turtle as t
t.forward(150)

默认形状是一个黑色箭头

python海龟图指令 python海龟作图讲解_ci

改变海龟外观:

turtle.shape(name=None)name:一个有效名字的字符串

“arrow”

“turtle”

“circle”

“square”

“triangle”

“classic”

import turtle as t
t.shape("turtle")

python海龟图指令 python海龟作图讲解_ci_02

海龟是否可见:

turtle.hideturtle()

turtle.showturtle()

turtle.isvisible()

turtle.hideturtle(),turtle.ht()使海龟不可见。当你绘制复杂图形时这是个好主意,因为隐藏海龟可显著加快绘制速度。
turtle.showturtle(),turtle.st(),使海龟可见。
turtle.isvisible(),如果海龟显示返回 True,如果海龟隐藏返回 False。
import turtle as t
t.shape("turtle")
t.circle(100)
t.ht()

python海龟图指令 python海龟作图讲解_canvas_03

海龟移动指令

turtle.forward(distance)

turtle.right(angle)

turtle.goto(x,y)

turtle.backward(distance)

turtle.left(angle)

turtle.setpos(x,y)

turtle.setposition(x,y)

turtle.speed(speed)

turtle.forward(distance),turtle.fd(distance)海龟前进 distance 指定的距离,方向为海龟的朝向。
turtle.bk(distance),turtle.backward(distance)海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向。
turtle.right(angle),turtle.rt(angle)海龟右转 angle 个单位。
turtle.left(angle),turtle.lt(angle)海龟左转 angle 个单位。
turtle.goto(x, y=None),turtle.setpos(x, y=None),turtle.setposition(x, y=None)海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。
turtle.speed(speed=None)"fastest":  0 最快,"fast":  10 快,"normal":  6 正常,"slow":  3 慢,"slowest":  1 最慢

画笔控制——绘图状态

turtle.pendown()

turtle.penup()

turtle.pensize(width=None)

turtle.pendown()、turtle.pd()、turtle.down()画笔落下 -- 移动时将画线
turtle.penup()、turtle.pu()、turtle.up()画笔抬起 -- 移动时不画线
turtle.pensize(width=None)设置线条的粗细为 width 或返回该值
import turtle as t
# 设置海龟形状和速度
t.shape("turtle")
t.speed()

t.pu() #抬笔
t.setpos(-100,100) #将画笔移动到(-100,100)的位置
t.pd()  #落笔,开始绘制半径为50的圆
t.circle(50)

t.pu()  #抬笔
t.goto(100,100) #将画笔移动到(100,100)的位置
t.pendown()  #落笔,开始绘制半径为50的圆
t.circle(50)

t.penup()  #抬笔
t.setposition(100,-100) #将画笔移动到(100,-100)的位置
t.pendown()  #落笔,开始绘制半径为50的圆
t.circle(50)

t.pu()  #抬笔
t.setpos(-100,-100) #将画笔移动到(-100,-100)的位置
t.pd()  #落笔,开始绘制半径为50的圆
t.circle(50)
t.ht()  #隐藏海龟

python海龟图指令 python海龟作图讲解_字符串_04

在画布的四个不同位置,绘制了4个半径为50的圆

颜色控制和填充

颜色控制

填充

color()

filling()

pencolor()

begin_fill()

fillcolor()

end_fill()

turtle.pencolor(colorstring)设置画笔颜色为 colorstring 指定的 Tk 颜色描述字符串,例如 "red"、"yellow" 或 "#33cc8c"
turtle.fillcolor(colorstring)设置填充颜色为 colorstring 指定的 Tk 颜色描述字符串,例如 "red"、"yellow" 或 "#33cc8c"。
turtle.color(colorstring1, colorstring2)设置画笔颜色和填充颜色,相当于 pencolor(colorstring1) 加 fillcolor(colorstring2)
turtle.filling()返回填充状态 (填充为 True,否则为 False)
turtle.begin_fill()在绘制要填充的形状之前调用
turtle.end_fill()填充上次调用 begin_fill() 之后绘制的形状
from turtle import *
# 设置海龟形状和速度
shape("turtle")
speed()
color('red','light blue')  # 设置画笔颜色为red,填充颜色为light blue

begin_fill() # 开始填充
pu() #抬笔
setpos(-100,100) #将画笔移动到(-100,100)的位置
pd()  #落笔,开始绘制半径为50的圆
circle(50)
end_fill() # 结束填充

pu()  #抬笔
goto(100,100) #将画笔移动到(100,100)的位置
pendown()  #落笔,开始绘制半径为50的圆
circle(50)

penup()  #抬笔
setposition(100,-100) #将画笔移动到(100,-100)的位置
pendown()  #落笔,开始绘制半径为50的圆
circle(50)

#修改画笔颜色为blue,填充颜色为orange
pencolor('blue')
fillcolor('orange')

begin_fill() # 开始填充
pu()  #抬笔
setpos(-100,-100) #将画笔移动到(-100,-100)的位置
pd()  #落笔,开始绘制半径为50的圆
circle(50)
end_fill() # 结束填充
ht()  #隐藏海龟

python海龟图指令 python海龟作图讲解_canvas_05

一开始使用color('red','light blue'),设置画笔和填充颜色分别为red和light blue,绘制完第一个圆之后,开始填充。

第二个和第三个圆并没有设置填充颜色,在绘制第四个圆之前,利用

pencolor('blue')
fillcolor('orange')

修改了画笔和填充的颜色。
更改背景颜色

turtle.bgcolor(*args)一个颜色字符串或三个取值范围 0..colormode 内的数值或一个取值范围相同的数值3元组