Python標準庫之Turtle
首先,要學習turtle之前,我們要先了解下turtle的由來及作用。經過小編詳細的瞭解(隨便百度了一下),turle是python一個用來畫圖的庫,出生於1966年(好老)。其被創作出來的目的是教小朋友們學程式設計。除此之外,沒有其他作用。嗯。。。畢竟佩奇初衷也是給小朋友看的,這樣想想,突然如釋重負。
為什麼一個畫圖的庫不叫什麼paint啊draw,要叫turtle(海龜)呢?原來,turtle畫出來的畫是機器人海龜的爬行路線所造就的,想象一下,一隻海龜爬行之後留下的路線造就了一幅好看的畫,那是一件多麼有趣的事!(可能我8歲的時候會這麼想吧)
雖然這東西是給小朋友玩的,但秉著熱愛學習的態度(這都不會就比不過小朋友了),我們還是來學習學習?
我們在畫畫之前,首先用到的東西是什麼?沒錯,就是紙了,紙的大小,放在桌子上的畫的位置,這些都是我們在畫畫之前需要考慮到的問題。
那麼,在turtle中該如何來定義這些呢?
設定畫布大小:
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
canvwidth表示畫布的寬度,anvheight表示畫布的高度,bg表示畫布的顏色
例如我們設定t.screensize(800,800,"green"),看到沒有,綠了!綠了!
當然,我們還可以通過turtle.setup(width=None, height=None, startx=None, starty=None)來設定畫布,我們可以看下下圖,(startx,starty)其實是一個座標來著,他表示畫布初始的位置是在你電腦螢幕的哪裡,預設是可以不設定,就表示居中,而height則表示畫布高度,width表示畫布寬度。用setup的話背景預設為白色。
好了,上面已經介紹瞭如何處理我們的畫紙,那接下來我們就可以開始來畫了。慢著,我們是不是忘記了啥,有了紙,我們是不是需要有隻筆,我們用筆的話是用2B寬度的還是0.5的?是用什麼顏色的筆?
設定畫筆:
我們可以通過turtle.pensize()來設定畫筆的寬度,大小範圍為1到不知道多少,反正我試過100的,應該最大是畫布寬度那麼寬吧。下圖是1-5-10寬度的比較。
接下來是筆的顏色,turtle.pencolor()函式可以設定畫筆的顏色,你可以用字串的"red","green"來設定,也可以用RGB的三個顏色值來設定。如turtle.pen("black")和turtle.pensize(0,0,0)都表示黑色,不要問我為什麼RGB的(0,0,0)是黑色,因為我也不知道
最後就是筆速了,turtle.speed()可以設定畫筆的速度,具體範圍是1-10,怎麼設定就看個人喜好了,這個我無權干預。
有筆有紙這下可以畫了吧!好的,可以畫了,我們人畫畫是通過大腦對手的控制,再手控制筆去畫。那程式碼要怎麼畫?很簡單啊,也是大腦控制手,手控制鍵盤,鍵盤控制程式碼,程式碼控制畫筆去畫,也就多了幾個步驟而已。(有沒有有一種想要打死小編的衝動)
具體指令太多,我就不一一介紹了,相信大家也應該看的懂,我就直接百度給你們了,最後再挑個重點來講講。
畫筆運動命令
turtle.forward(distance) | 向當前畫筆方向移動distance畫素長度 |
turtle.backward(distance) | 向當前畫筆相反方向移動distance畫素長度 |
turtle.right(degree) | 順時針移動degree° |
turtle.left(degree) | 逆時針移動degree° |
turtle.pendown() | 移動時繪製圖形,預設時也為繪製 |
turtle.goto(x,y) | 將畫筆移動到座標為x,y的位置 |
turtle.penup() | 提起筆移動,不繪製圖形,用於另起一個地方繪製 |
turtle.circle() | 畫圓,半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓 |
setx( ) | 將當前x軸移動到指定位置 |
sety( ) | 將當前y軸移動到指定位置 |
setheading(angle) | 設定當前朝向為angle角度 |
home() | 設定當前畫筆位置為原點,朝向東。 |
dot(r) | 繪製一個指定直徑和顏色的圓點 |
畫筆控制命令
命令 | 說明 |
turtle.fillcolor(colorstring) | 繪製圖形的填充顏色 |
turtle.color(color1, color2) | 同時設定pencolor=color1, fillcolor=color2 |
turtle.filling() | 返回當前是否在填充狀態 |
turtle.begin_fill() | 準備開始填充圖形 |
turtle.end_fill() | 填充完成 |
turtle.hideturtle() | 隱藏畫筆的turtle形狀 |
turtle.showturtle() | 顯示畫筆的turtle形狀 |
全域性控制命令
命令 | 說明 |
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引數也是可選項 |
其他命令
命令 | 說明 | |||||||||
turtle.mainloop()或turtle.done() | 啟動事件迴圈 -呼叫Tkinter的mainloop函式。 必須是烏龜圖形程式中的最後一個語句。 | |||||||||
turtle.mode(mode=None) | 設定烏龜模式(“standard”,“logo”或“world”)並執行重置。如果沒有給出模式,則返回當前模式。
| |||||||||
turtle.delay(delay=None) | 設定或返回以毫秒為單位的繪圖延遲。 | |||||||||
turtle.begin_poly() | 開始記錄多邊形的頂點。當前的烏龜位置是多邊形的第一個頂點。 | |||||||||
turtle.end_poly() | 停止記錄多邊形的頂點。當前的烏龜位置是多邊形的最後一個頂點。將與第一個頂點相連。 | |||||||||
turtle.get_poly() | 返回最後記錄的多邊形。 |
最後講解下幾個關鍵的知識點,記得做筆記了。
第一個是絕對角度,絕對角度呢就是相對於畫布而言的,因為畫布是靜止不動的,所以以畫布中心構建的角度座標的角度是不會發生變化的,如圖所示,90°就是指正北方向。turtle.seth(angle)函式中的角度用的就是絕對角度。
與絕對角度相對應的就是海龜角度了,也叫相對角度。他是以海龜本身的方向為中心建立起來的一個角度座標系,他是時刻在變動的。turtle.left(angle)、turtle.right(angle)中的角度用的就是相對角度了。
海龜的畫圓方向,海龜的畫圓方向是左手邊,你沒想錯,這是一隻左撇子的龜,為什麼是左撇子呢,可能turtle的作者是左撇子吧。既然圖中畫出來了就順帶講下吧。turtle.fd()表示往海龜的朝向爬行多少個畫素點,而turtle.bk()則表示海龜倒著走多少個畫素點。因為小編趕著回家睡覺,就這樣馬馬虎虎收尾吧,相信大家肯定也比小朋友強,肯定能看懂我在說什麼的。
歡迎大家關注我的微信公眾號Python小黑屋
python學習資源/有趣的python文章/python學習筆記