turtle庫的學習筆記(python)
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是否可見三、繪圖舉例
(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()


