turtle庫的學習筆記(python)


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&timestamp=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()

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM