Python 内置库 - turtle
Python 库
Python内置库——Turtle
Turtle 库是 Python 语言中一个很流行的图像绘制函数库。小乌龟在坐标系(横轴X,纵轴Y,坐标原点(0,0))中,根据一组函数指令的控制,在平面坐标系中移动,根据运行轨迹进行绘图。
- turtle 起始位置默认处于坐标原点(0,0)
- turtle 默认运行方向为 0º 方向(0º 方向为 3 点钟方向)
Python 中使用 Turtle 库
1 2
| import turtle turtle.forward(100)
|
turtle.forward(parameter)
turtle 面向 0º 方向移动 100px
1 2
| import turtle turtle.forward(100)
|
turtle.backward(parameter)
turtle 面向 0º 方向移动 100px
1 2
| import turtle turtle.backward(100)
|
turtle.left(parameter)
turtle 逆时针旋转 parameterº
1 2
| import turtle turtle.left(90)
|
turtle.right(parameter)
turtle 顺时针旋转 parameterº
1 2
| import turtle turtle.right(90)
|
思考:parameter 是否可以为负数
综合应用
画一个距形
1 2 3 4 5 6 7 8
| import turtle turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100) turtle.left(90) turtle.forward(100)
|
画布
Turtle 是用来绘制图像的,给制在哪的呢?绘制在画布上(Python Turtle Graphics)。也就是 turtle 为我们打开的绘制图像的区域。
turtle 可以设置画布的大小和颜色
turtle.screensize(width,height,”color”),width 表示画布的宽,height 表示画布的高,color 表示画布的颜色
画布默认的大小为 400*300
1 2
| import turtle turtle.screensize(500,300,'purple')
|
turtle.setup(width,height,left,top) width 画布的宽,height 画布的高,left 表示的画布距离屏幕左侧的距离,top 表示画布距离屏幕顶部的距离
1 2
| import turtle turtle.setup(100,100,0,0)
|
turtle 创建变量
turtle.Turtle() 获取 turtle 对象
turtle.Pen() #获取 turtle 的画笔对象
1 2 3 4 5 6 7 8 9 10 11
| import turtle
t = turtle.Pen() t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
|
turtle.shape(parameter)
改变 turtle 外观,parameter 可以是 [arrow, turtule, circle, square, triangle, classic(默认箭头)] 中的任意一个
1 2 3
| import turtle t = turtle.Turtle() t.shape('turtle')
|
画笔
turtle.pensize(parameter)
设置画笔大小
turtle.pencolor(parameter)
设置画笔颜色
turtle.speed(parameter)
设置画笔速度
综合应用
用小乌龟画笔在紫色的画布上快速画一个红色粗边框(10),边长为 100px 的矩形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(1)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
|
用三角形画笔在紫色的画布上快速画一个黄色粗边框(10),边长为 100px 的等腰三角形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import turtle
turtle.screensize(400,300, 'purple')
t = turtle.Pen()
t.shape('triangle') t.pensize(10) t.pencolor('yellow') t.speed(2)
t.forward(100) t.left(120) t.forward(100) t.left(120) t.forward(100)
|
在一张画布上同时画出以上两种图形,两个图形之间间距 100
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(1)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
t.right(90) t.forward(100)
t.shape('triangle') t.pensize(10) t.pencolor('yellow') t.speed(2)
t.forward(100) t.right(120) t.forward(100) t.right(120) t.forward(100)
|
turtle.up()
提笔
turtle.down()
落笔
综合应用
利用提笔、落笔函数,绘制中间没有连线的三角形
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(1)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
t.right(90) t.up() t.forward(100) t.down()
t.shape('triangle') t.pensize(10) t.pencolor('yellow') t.speed(2)
t.forward(100) t.right(120) t.forward(100) t.right(120) t.forward(100)
|
turtle.goto(x,y)
画笔称动到指定位置
综合应用
将以上图形改造成为房子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(1)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
t.right(90) t.up() t.goto(115,115) t.down()
t.shape('triangle') t.pensize(10) t.pencolor('yellow') t.speed(2)
t.forward(130) t.right(120) t.forward(130) t.right(120) t.forward(130)
|
turtle.setx()
画笔在移动到 x 轴指定位置
综合应用
矩形边上画出绿色的小草
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(1)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
t.right(90) t.up() t.goto(115,115) t.down()
t.up() t.setx(120) t.down()
t.shape('turtle') t.pensize(6) t.pencolor('green')
t.left(135) t.forward(50) t.right(90) t.forward(50) t.left(90) t.forward(70) t.right(90) t.forward(70) t.left(90) t.forward(80) t.right(90) t.forward(80)
|
turtle.sety()
画笔在移动到 y 轴指定位置
综合应用
矩形边上画出绿色的小草
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(10)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
t.right(90) t.up() t.goto(115,115) t.down()
t.shape('triangle') t.pensize(10) t.pencolor('yellow') t.speed(2)
t.forward(130) t.right(120) t.forward(130) t.right(120) t.forward(130)
t.up() t.sety(0) t.down()
t.shape('arrow') t.pensize(6) t.pencolor('green')
t.left(105) t.forward(50) t.right(90) t.forward(50) t.left(90) t.forward(70) t.right(90) t.forward(70) t.left(90) t.forward(80) t.right(90) t.forward(80)
|
turtle.fillcolor(colorstring) 填充颜色
turtle.color(color, color) 同时设置笔与填充色
设置绘制图形的填充颜色
绘制黄色小星星
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import turtle turtle.screensize(None,None,'purple') t = turtle.Pen()
t.color("yellow", "yellow") t.speed(1)
t.begin_fill() t.forward(50) t.left(144) t.forward(50) t.left(144) t.forward(50) t.left(144) t.forward(50) t.end_fill()
|
综合应用
房子,草地,星星
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| ```python import turtle turtle.screensize(400,300,'purple') t = turtle.Pen()
t.shape('turtle') t.pensize(10) t.pencolor('red') t.speed(10)
t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100) t.left(90) t.forward(100)
t.right(90) t.up() t.goto(115,115) t.down()
t.shape('triangle') t.pensize(10) t.pencolor('yellow') t.speed(2)
t.forward(130) t.right(120) t.forward(130) t.right(120) t.forward(130)
t.up() t.sety(0) t.down()
t.shape('arrow') t.pensize(6) t.pencolor('green')
t.left(105) t.forward(50) t.right(90) t.forward(50) t.left(90) t.forward(70) t.right(90) t.forward(70) t.left(90) t.forward(80) t.right(90) t.forward(80)
t.up() t.goto(250,280) t.down()
t.color("yellow", "yellow") t.pensize(1)
t.begin_fill() t.forward(50) t.left(144) t.forward(50) t.left(144) t.forward(50) t.left(144) t.forward(50) t.end_fill()
t.up() t.goto(150,240) t.down()
t.color("yellow", "yellow") t.pensize(1)
t.begin_fill() t.forward(50) t.left(144) t.forward(50) t.left(144) t.forward(50) t.left(144) t.forward(50) t.end_fill()
|
turtle.circle(radius) 画圆
turtle.circle(size,steps=3) 画三角形
turtle.circle(120, 180) 画半圆
turtle.dot(size=None, color) 画圆点
按给定的 size 画圆点,size 是直径,None 时,是 pensize+4 和 2*pensize 中取最大的值或 >=1 的整数。color 圆点的颜色
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import turtle t = turtle.Pen() t.circle(20)
t.up() t.goto(40, 0) t.down()
t.circle(20,steps=3)
t.up() t.goto(60, 0) t.down()
t.left(180) t.circle(20, 180)
t.up() t.goto(80, 0) t.down()
t.dot(20, 'black')
|