Python-一级6

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 库,注意区分大小写
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 面向正上方,12 点钟方向

turtle.right(parameter)

turtle 顺时针旋转 parameterº

1
2
import turtle #导入库
turtle.right(90) #turtle 面向正下方,6 点钟方向

思考:parameter 是否可以为负数

综合应用

画一个距形

1
2
3
4
5
6
7
8
import turtle #专入库
turtle.forward(100) #面向 3 点钟方向,移动 100 px
turtle.left(90) #turtle 面向 12 点钟方向
turtle.forward(100) #turtle 面向 12 点钟方向移动 100 px
turtle.left(90) #turtle 面向 9 点钟方向
turtle.forward(100) #turtle 面向 9 点钟方向移动 100px
turtle.left(90) #turtle 面向 6 点钟方向
turtle.forward(100) #turtle 面向 6 点钟方向移动 100px

画布

Turtle 是用来绘制图像的,给制在哪的呢?绘制在画布上(Python Turtle Graphics)。也就是 turtle 为我们打开的绘制图像的区域。

turtle 可以设置画布的大小和颜色

turtle.screensize(width,height,”color”),width 表示画布的宽,height 表示画布的高,color 表示画布的颜色
画布默认的大小为 400*300

1
2
import turtle #导入 turtle 库
turtle.screensize(500,300,'purple')

turtle.setup(width,height,left,top) width 画布的宽,height 画布的高,left 表示的画布距离屏幕左侧的距离,top 表示画布距离屏幕顶部的距离

1
2
import turtle # 导入 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.Turtle() #获取 turtle 对象
t = turtle.Pen() #获取 turtle 的画笔对象
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px
#t.screensize(100,100,'brown') #Turtle' object has no attribute 'screensize'

turtle.shape(parameter)

改变 turtle 外观,parameter 可以是 [arrow, turtule, circle, square, triangle, classic(默认箭头)] 中的任意一个

1
2
3
import turtle #专入库
t = turtle.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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(1)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

用三角形画笔在紫色的画布上快速画一个黄色粗边框(10),边长为 100px 的等腰三角形

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import turtle #导入 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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(1)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(1)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

# 移动,绘制三角形
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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(1)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

# 移动,绘制三角形
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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(1)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

# 移动,绘制三角形
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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(10)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

# 移动,绘制三角形
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.pencoloe('yellow')
# t.fillcolor('yellow')
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 库
turtle.screensize(400,300,'purple')
t = turtle.Pen()
# 设置画笔
t.shape('turtle')
t.pensize(10)
t.pencolor('red')
t.speed(10)
# 画矩形
t.forward(100) #面向 3 点钟方向,移动 100 px
t.left(90) #turtle 面向 12 点钟方向
t.forward(100) #turtle 面向 12 点钟方向移动 100 px
t.left(90) #turtle 面向 9 点钟方向
t.forward(100) #turtle 面向 9 点钟方向移动 100px
t.left(90) #turtle 面向 6 点钟方向
t.forward(100) #turtle 面向 6 点钟方向移动 100px

# 移动,绘制三角形
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')