1. 程式人生 > >Python標準庫之Turtle

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()

啟動事件迴圈 -呼叫Tkintermainloop函式。

必須是烏龜圖形程式中的最後一個語句。

turtle.mode(mode=None)

設定烏龜模式(“standard”“logo”“world”)並執行重置。如果沒有給出模式,則返回當前模式。

模式

初始龜標題

正角度

standard

向右(東)

逆時針

logo

向上(北)

順時針

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學習筆記