turtle庫的學習筆記(python) turtle(海龜)是Python重要的標準庫之一,它能夠進行基本的圖形繪製。turtle圖形繪製的概念誕生於1969年,成功應用於LOGO編程語言。turtle庫繪製圖形有一個基本框架:一個小海龜在坐標系中爬行,其爬行軌跡形成了繪製圖形。剛開始繪製時,小海 ...
turtle庫的學習筆記(python)
turtle(海龜)是Python重要的標準庫之一,它能夠進行基本的圖形繪製。turtle圖形繪製的概念誕生於1969年,成功應用於LOGO編程語言。turtle庫繪製圖形有一個基本框架:一個小海龜在坐標系中爬行,其爬行軌跡形成了繪製圖形。剛開始繪製時,小海龜位於畫布正中央,此處坐標為(0,0),前進方向為水平右方。 在Python3系列版本安裝目錄的Lib文件下可以找到turtle.py文件。
一、用import保留字對turtle庫的引用有如下3種方式,效果相同:
(1)import turtle
對turtle庫中函數調用採用turtle.<函數名>( )形式:
(2)from turtle import * (當程式中有多個庫時容易混淆產生錯誤)
對turtle庫中函數調用採用<函數名>( )形式,不再使用turtle.作為前導:
(3) import turtle as t
保留字as將turtle庫給予別名t, 則對turtle庫中函數調用採用更簡潔的t.<函數名>( )形式:
二、繪圖的基礎知識
(1)繪圖視窗設置命令
turtle.setup(400,300,200,100):參數以此(寬,高,距離屏幕左邊距離,距離屏幕上方距離),屏幕左上角原點,單位像素。
(2)運動命令
turtle.goto(x,y):直接跳轉到(x,y)點,以繪圖視窗中心為原點,向右為x軸,以上為y軸。
turtle.fd(d)、turtle.forward(d):以當前方向,往前行進d像素。
turtle.bk(d)、turtle.backword(d):保持當前方向不變,往後退行d像素。
turtle.circle(r,angle):從當前位置以r為半徑圓的angle角度旋轉。
(3)方向設置命令
turtle.seth(angle):以x軸方向為起點將方向偏轉為angle度,逆時針為正。只改變行進方向但不行進。
turtle.left(angle):在當前行進方向的基礎上,向左旋轉angle度。
turtle.right(angle):在當前行進方向的基礎上,向右旋轉angle度。
(4)畫筆控制命令
turtle.penup():抬筆
turtle.pendown():落筆
turtle.pensize(width):畫筆粗細
turtle.pencolor(顏色名red/RGB三元組/顏色編碼):畫筆顏色
turtle.fillcolor(colorstring):繪製圖形的填充顏色
turtle.begin_fill():開始填充
turtle.end_fill():結束填充
turtle.filling():返回當前是否在填充狀態
(5)全局控制命令
turtle.clear():清空turtle視窗,但是turtle的位置和狀態不會改變
turtle.reset():清空視窗,重置turtle狀態為起始狀態
turtle.undo():撤銷上一個turtle動作
turtle.isvisible():返回當前turtle是否可見 stamp():複製當前圖形 turtle.write(s[,font=("font-name",font_size,"font_type")]):寫文本,s為文本內容,font是字體的參數,裡面分別為字體名稱,大小和類型;font為可選項, font的參數也是可選項三、繪圖舉例
(1)彩色小蟒蛇
1 #PythonDraw.py
2 import turtle as tt
3 def drawSnake(rad,angle,len,neckrad):
4 colors=["LightCoral","orange","yellow","MediumSpringGreen","cyan","MediumBlue"]#六種顏色
5 for i in range(len):
6 tt.color(colors[i])
7 tt.circle(rad,angle)
8 tt.circle(-rad,angle)
9 tt.color("Fuchsia")
10 tt.circle(rad,angle/2)
11 tt.fd(rad)
12 tt.circle(neckrad+1,180)
13 tt.fd(rad*2/3)
14
15
16 def main():
17 tt.setup(1300,800,0,0)
18 tt.penup()
19 tt.goto(-350,0)
20 tt.pendown()
21 pythonsize=30
22 tt.pensize(30)
23 tt.seth(-40)
24 drawSnake(40,80,6,pythonsize/2)
25
26
27 main()
28 tt.done()
Python小海龜繪圖之顏色碼對照表:
https://mp.weixin.qq.com/s?src=11×tamp=1584246963&ver=2217&signature=lMb0twV32ZppcpRo3AfqFMZi0vtHB3oLPjjYMCACHz9PNO7EoncrvGCRWUeg5FYzGioV2aAExFCASNJUG7vGl2R5THDCOZwiQqHF0DvHGH4i7u3KYCY*LPJW11OuBrkj&new=1
(2)玫瑰花的繪製
1 from turtle import *
2 import time
3
4 setup(5000,5000,0,0)
5 speed(0)
6 penup()
7 pencolor("SaddleBrown") #改變畫筆顏色
8 seth(90)
9 fd(340)
10 seth(0)
11 pendown()
12
13 speed(5)
14 begin_fill()
15 fillcolor('blue') #改變花瓣顏色
16 circle(50,30)
17
18 for i in range(10):
19 fd(1)
20 left(10)
21
22 circle(40,40)
23
24 for i in range(6):
25 fd(1)
26 left(3)
27
28 circle(80,40)
29
30 for i in range(20):
31 fd(0.5)
32 left(5)
33
34 circle(80,45)
35
36 for i in range(10):
37 fd(2)
38 left(1)
39
40 circle(80,25)
41
42 for i in range(20):
43 fd(1)
44 left(4)
45
46 circle(50,50)
47
48 time.sleep(0.1)
49
50 circle(120,55)
51
52 speed(0)
53
54 seth(-90)
55 fd(70)
56
57 right(150)
58 fd(20)
59
60 left(140)
61 circle(140,90)
62
63 left(30)
64 circle(160,100)
65
66 left(130)
67 fd(25)
68
69 penup()
70 right(150)
71 circle(40,80)
72 pendown()
73
74 left(115)
75 fd(60)
76
77 penup()
78 left(180)
79 fd(60)
80 pendown()
81
82 end_fill()
83
84 right(120)
85 circle(-50,50)
86 circle(-20,90)
87
88 speed(1)
89 fd(75)
90
91 speed(0)
92 circle(90,110)
93
94 penup()
95 left(162)
96 fd(185)
97 left(170)
98 pendown()
99 circle(200,10)
100 circle(100,40)
101 circle(-52,115)
102 left(20)
103 circle(100,20)
104 circle(300,20)
105 speed(1)
106 fd(250)
107
108 penup()
109 speed(0)
110 left(180)
111 fd(250)
112 circle(-300,7)
113 right(80)
114 circle(200,5)
115 pendown()
116
117 left(60)
118 begin_fill()
119 fillcolor('gold') #改變葉子顏色
120 circle(-80,100)
121 right(90)
122 fd(10)
123 left(20)
124 circle(-63,127)
125 end_fill()
126
127 penup()
128 left(50)
129 fd(20)
130 left(180)
131
132 pendown()
133 circle(200,25)
134
135 penup()
136 right(150)
137
138 fd(180)
139
140 right(40)
141 pendown()
142 begin_fill()
143 fillcolor('gold') #改變葉子顏色
144 circle(-100,80)
145 right(150)
146 fd(10)
147 left(60)
148 circle(-80,98)
149 end_fill()
150
151 penup()
152 left(60)
153 fd(13)
154 left(180)
155
156 pendown()
157 speed(1)
158 circle(-200,23)
159
160
161
162 exitonclick()