Python turtle学习笔记
一、简介
Turtle最早来自于LOGO语言,是专门用于小孩子学习编程的,通过编程模拟一只turtle(海龟)在画板上爬行绘制图案,后来很多高级语言都移植了海龟绘图,python从2.6之后也将turtle库加入了其内部库中。由于是内部库,使用import turtle语句就能引入turtle库,绘图主要有以下几个步骤:设置画布、设置画笔、控制海龟移动绘制图形、色彩填充等。
二、基础知识
1)turtle库的引用
引用turtle库主要有以下三种方法:
1.使用import保留字直接引用
import turtle #每次使用函数需加上turtle.
2.使用from和import保留字共同完成
from turtle import * #调用函数时不用加turtle.,但可能会与变量名重复
3.使用import和as保留字共同完成
import turtle as t #给turtle库起了个别名t
2)画布
画布即turtle提供的绘图区域,可用以下指令设置画布的规模:
1.
turtle.setup(width,height, startx, starty)
width为画布的宽度;
heigh为画布的高度;
(startx,starty)这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。

如:
turtle.setup(650,300,100,100)
2.
turtle.screensize(canvwidth canvheight, bg)
canvwidth为画布的宽度;
canvheight为画布的高度;
bg为画布背景颜色。
如:
turtle.screensize(500,400,"red")
3)画笔
1、画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
2、画笔的属性
画笔(画笔的属性,颜色、画线的宽度等)
turtle.penside() #设置画笔的宽度 turtle.pencolor() #没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB3元组。 turtle.speed(speed) #设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
4)操纵画笔的函数
绘制图形需要许多让画笔移动和转向甚至颜色的函数,常用到的函数有如下:
画笔操作后一直有效,一般成对使用
turtle.penup() #turtle.pu() 提起画笔移动,不绘制图形 turtle.pendown() #turtle.pd() 画笔落下
画笔设置后一直有效,直到下次重新设置
turtle.penside(width) #turtle.width(width) 设置画笔的宽度 turtle.pencolor(color) #设置画笔的颜色 #color参数有三种形式 #颜色字符串 如turtle.pencolor("pink") #RGB小数值 如turtle.pencolor(0.63,0.13,0.94) #RGB整数值 如turtle.pencolor(128,0,128) #RGB数值元组 如turtle.pencolor((0.63,0.13,0.94))
画笔改变角度的函数,只转不动
turtle.right(degree) #顺时针移动degree° turtle.left(degree) #逆时针移动degree° turtle.seth(degree) #只改变画笔方向但不移动,degree为绝对度数
画笔运动的函数
turtle.forward(distance) #向当前画笔方向移动distance像素长度 turtle.backward(distance) #向当前画笔相反方向移动distance像素长度 turtle.goto(x,y) #将画笔移动到坐标为x,y的位置 turtle.circle(r,extent) #根据半径r绘制extent角度的弧形,r默认在画笔左端距离r长度的地方,默认绘制完整的圆
三、绘制实例
1)Python蟒蛇绘制
代码如下:
#Python蟒蛇绘制
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()
效果图如下:

2)绘制一朵玫瑰花
代码如下:
#绘制一朵玫瑰花
import turtle
# 设置初始位置
turtle.penup()
turtle.left(90)
turtle.fd(200)
turtle.pendown()
turtle.right(90)
# 花蕊
turtle.fillcolor("lightpink")
turtle.begin_fill()
turtle.circle(10, 180)
turtle.circle(25, 110)
turtle.left(50)
turtle.circle(60, 45)
turtle.circle(20, 170)
turtle.right(24)
turtle.fd(30)
turtle.left(10)
turtle.circle(30, 110)
turtle.fd(20)
turtle.left(40)
turtle.circle(90, 70)
turtle.circle(30, 150)
turtle.right(30)
turtle.fd(15)
turtle.circle(80, 90)
turtle.left(15)
turtle.fd(45)
turtle.right(165)
turtle.fd(20)
turtle.left(155)
turtle.circle(150, 80)
turtle.left(50)
turtle.circle(150, 90)
turtle.end_fill()
# 花瓣1
turtle.left(150)
turtle.circle(-90, 70)
turtle.left(20)
turtle.circle(75, 105)
turtle.setheading(60)
turtle.circle(80, 98)
turtle.circle(-90, 40)
# 花瓣2
turtle.left(180)
turtle.circle(90, 40)
turtle.circle(-80, 98)
turtle.setheading(-83)
# 叶子1
turtle.fd(30)
turtle.left(90)
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
#叶子2
turtle.fd(25)
turtle.left(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(-80, 90)
turtle.right(90)
turtle.circle(-80, 90)
turtle.end_fill()
turtle.right(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(85)
turtle.right(90)
turtle.fd(85)
# 叶子3
turtle.right(90)
turtle.fd(15)
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(90)
#叶子4
turtle.right(45)
turtle.fillcolor("green")
turtle.begin_fill()
turtle.circle(80, 90)
turtle.left(90)
turtle.circle(80, 90)
turtle.end_fill()
turtle.left(135)
turtle.fd(60)
turtle.left(180)
turtle.fd(75)
turtle.left(90)
turtle.circle(200, 60)
turtle.pendown()
turtle.done()
效果图如下:

3)绘制太极图
代码如下:
#绘制太极图
from turtle import *
setup(800,800,100,100)
#绘制左半部分
fillcolor('#FFFFFF')
begin_fill()
circle(100,180)
circle(200,180)
seth(180)
circle(-100,180)
end_fill()
seth(90)
penup()
fd(85)
pendown()
seth(0)
fillcolor('#000000')
begin_fill()
circle(25)
end_fill()
seth(-90)
penup()
fd(85)
pendown()
seth(180)
#绘制右半部分
fillcolor('#000000')
begin_fill()
circle(100,180)
circle(200,180)
seth(0)
circle(-100,180)
end_fill()
seth(-90)
penup()
fd(85)
pendown()
seth(-180)
fillcolor('#FFFFFF')
begin_fill()
circle(25)
end_fill()
hideturtle()
done()
效果图如下:


浙公网安备 33010602011771号