python之turtle库学习(海龟图形)
python之turtle库学习
这两天在一个公众号里看到一个文章好玩的库,今天来学习一下。Github地址
一。方法
1.forward() | fd():向前移动指定的距离。参数:一个数字(integer or float))。turtle.forward(25)2.backward() | bk() | back():向后移动指定的距离。参数:一个数字(integer or float))。turtle.backward(30)3..right() | rt():以角度单位向右转动。参数:一个数字(integer or float))。单位默认为度数,可以通过degrees()和radians()进行设置。turtle.right(45) 4.left() | lt():以角度单位向左转动。参数:一个数字(integer or float))。单位默认为度数,可以通过degrees()和radians()进行设置。turtle.left(45) 5.goto() | steps() | setposition():移动到绝对位置,如果笔落下,画线,不改变方向。参数:x-一个数字或一对数字。y-一个数字或None。turtle.setpos(60,30)#60.00,30.00)6.setx():设置第一个坐标的值即X方向。参数:一个数字(integer or float))。turtle.setx(10)#(10.00,0.00)7.sety():设置第二个坐标的值即Y方向。参数:一个数字(integer or float))。turtle.sety(10)#(0.00,10.00)8.setheading() | seth(): 将方向设置为to_angle.就是东西南北方向。具体如下:标准模式:0 - 东 90 - 北 180 - 西 270 - 南 标志模式 0- 北 90- 东 180- 南 270 - 西turtle.setheading(90)9.home() : 移动到原点 - 坐标(0,0):并将其标题设置为其起始方向(取决于模式)。turtle.home()
- 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
- 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
(0.00,0.00)
10.circle():绘制一个给定半径的圆。参数:radius-一个数字(半径,如果值为正则逆时针,负数为顺时针),extent-一个数字()steps- 执行的步数。turtle.circle(120,180,5)11.dot() :用颜色画出一个直径大小的圆点。参数:size-一个大于1的整数,可None。默认用的是pensize+4和2*pensize的最大值,color-颜色值turtle.dot(20, 'blue')12.stamp():将当前位置上的形状复制到画布上返回stamp_id.可以调用,可以删除。turtle.stamp()13.clearstamp():删除stamp()返回来的值。参数:stampid。 14.clearstamps():删除全部stamp()的值。参数:stampid。15.undo():撤销最后的动作。16.speed():将速度设置为0..10范围内整数。如果没有参数,则返回当前速度。如果大于10或者小于0.5,则速度设置为0 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
“最快”:0 :直接成图,没有动画效果“快”:10:大概一秒“正常”:6:“慢”:3“最慢”:117:position() | pos(): 返回当前的位置。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
turtle.pos()# (0.00,0.00)18.towards(): 返回当前位置同指定位置之间的角度。参数:x-一个数字或一对数字或一个实例的向量,y-如果x是数字,则为数字,否则为None。turtle.goto(10,10)tw = turtle.towards(0,0)print(tw)# 22519.xcor():返回x坐标。 ycor():返回y坐标。20.heading(): 返回当前的方向值。21.distance():返回x,y两个点的直线距离22.degrees():设置一整圈的度数。默认是360度。23.radians():将角度测量单位设置为弧度。相当于 degrees(2*math.pi)24.pendown() | pd() | down():放下笔,移动的时候绘图。25.penup() | pu() | up():将提起笔,移动时无图。26.pensize():设置线条的粗细。参数:width-一个正数27.pen():使用键值对设置笔的属性: “shown”: True/False“pendown”: True/False“pencolor”: 颜色字符串或者颜色值“fillcolor”: 颜色字符串或者颜色值“pensize”: 正数“speed”: 速度范围为0..10的数字“resizemode”: “auto” or “user” or “noresize”“stretchfactor”: (positive number, positive number)“outline”: 正数“tilt”: 正数 28.isdown():如果笔停止返回True,反之False29.pencolor():设置笔的颜色。30.fillcolor():笔的填充色。31.color():同时设置pencolor和fillcolor32.filling():返回fillstate状态,如果填充则返回True,反之False。33.begin_fill():在绘制要填充的形状前调用。当然在调用完还需要end_fill()。34.reset():重置,将屏幕中的图纸删除,重新居中并将所有变量设置为默认值。35.clear():删除图纸。对属性不做操作。36.write():写文本。参数:arg-要写入的对象。move-是否移动。align-对齐方式:left,right,center。font-字体。fontname,fontsize,fonttype。37.hideturtle() | ht() :删隐藏乌龟的形状,在做复杂绘图的时候隐藏的时候有利于提高绘图速度。38.showturtle() | st():显示乌龟的形状。39.isvisible():乌龟是否可见。如果可见返回True,反之则False。40.shape():设置乌龟的图形形状,取值:“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic” 41.isvisible():乌龟是否可见。如果可见返回True,反之则False。42.resizemode():参数:rmode取值:'auto','user','noresize'.43.shapesize() | turtlesize() : 返回笔的属性。44.shearfactor(): 设置或者返回但钱的剪切因子。45.tilt():旋转由turtle shape角度从当前的倾斜角度。46.settiltangle():无论当前的倾斜角度如何,旋转乌龟指向 angle 指定的方向。参数:angle -数字。已弃用47.tiltangle():设置或者返回当前的倾斜角度。参数:angle - 数字48.shapetransform():设置或返回乌龟的形状的当前转换矩阵。49.get_shapepoly():返回当前形状的坐标。50.onclick():鼠标点击事件。参数:fun-一个带有两个参数的函数,这些参数将与画布上单击点的坐标一个调用。num-鼠标按钮的数量,默认为1(左键)。add- True的时候将添加新的绑定。否则替换以前的绑定。51.onrelease():鼠标释放事件。参数同点击事件。52.ondrag():鼠标移动事件。参数同点击事件。53.begin_poly(): 开始记录多边形的顶点。54.end_poly():停止记录多边形的顶点。55.get_poly():返回最后记录的多边形。56.clone():创建并返回具有相同位置等等属性的乌龟克隆。57.getturtle() | getpen() :获取trutle对象本身。58.getscreen():返回正在绘制的对象。59.setundobuffer(): 设置或禁用中断器。参数: size-整数。如果大小是None,则禁用缓冲区。60.undobufferentries():返回undobuffer中的条目数。61.bgcolor():设置或者返回当前的TurtleScreen的背景颜色。62.bgpic():设置背景图片。参数: picname-文件名。62.delay(): 设置或返回以毫秒为单位的绘制延迟,延迟越大,绘图越慢。63.ontimer():定时器。64.mainloop() | done() :开始循环 。65.textinput() | numinput():弹出一个输入字符串和数字的窗口。66.mode(): 三种方式:“standard”, “logo” or “world”
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
二。实例:画个时钟。
# coding=utf-8 import turtlefrom datetime import * # 抬起画笔,向前运动一段距离放下def Skip(step): turtle.penup() turtle.forward(step) turtle.pendown() def mkHand(name, length): # 注册Turtle形状,建立表针Turtle turtle.reset() Skip(-length * 0.1) # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。 turtle.begin_poly() turtle.forward(length * 1.1) # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。 turtle.end_poly() # 返回最后记录的多边形。 handForm = turtle.get_poly() turtle.register_shape(name, handForm) def Init(): global secHand, minHand, hurHand, printer # 重置Turtle指向北 turtle.mode('logo') # 建立三个表针Turtle并初始化 mkHand('secHand', 135) mkHand('minHand', 125) mkHand('hurHand', 90) secHand = turtle.Turtle() secHand.shape('secHand') minHand = turtle.Turtle() minHand.shape('minHand') hurHand = turtle.Turtle() hurHand.shape('hurHand') for hand in secHand, minHand, hurHand: hand.shapesize(1, 1, 3) hand.speed(0) # 建立输出文字Turtle printer = turtle.Turtle() # 隐藏画笔的turtle形状 printer.hideturtle() printer.penup() def SetupClock(radius): # 建立表的外框 turtle.reset() turtle.pensize(7) turtle.pencolor('#ff5500') turtle.fillcolor('green') for i in range(60): Skip(radius) if i % 5 == 0: turtle.forward(20) Skip(-radius - 20) Skip(radius + 20) if i == 0: turtle.write(int(12), align='center', font=('Courier', 14, 'bold')) elif i == 30: Skip(25) turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold')) Skip(-25) elif (i == 25 or i == 35): Skip(20) turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold')) Skip(-20) else: turtle.write(int(i / 5), align='center', font=('Courier', 14, 'bold')) Skip(-radius - 20) else: turtle.dot(5) Skip(-radius) turtle.right(6) def Week(t): week = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'] return week[t.weekday()] def Date(t): y = t.year m = t.month d = t.day return '%s-%d-%d' % (y, m, d) def Tick(): # 绘制表针的动态显示 t = datetime.today() second = t.second + t.microsecond * 0.000001 minute = t.minute + second / 60.0 hour = t.hour + minute / 60.0 secHand.setheading(6 * second) minHand.setheading(6 * minute) hurHand.setheading(30 * hour) turtle.tracer(False) printer.forward(65) printer.write(Week(t), align='center', font=('Courier', 14, 'bold')) printer.back(130) printer.write(Date(t), align='center', font=('Courier', 14, 'bold')) printer.home() turtle.tracer(True) # 100ms后继续调用tick turtle.ontimer(Tick, 100) def main(): # 打开/关闭龟动画,并为更新图纸设置延迟。 turtle.tracer(False) Init() SetupClock(160) turtle.tracer(True) Tick() turtle.mainloop() if __name__ == '__main__': main()
- 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
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 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
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
赞 (0)