在Python中繪圖時,需要導入圖形模塊turtle。“turtle”的意思是“海龜”,所以這個模塊又被稱為海龜圖形模塊。有一個比較出名的集成編程環境叫海龜編輯器,以積木的形式表示命令,編程過程由“寫代碼”變成了“搭積木”,積木本身有“帽子”、“凹凸”等形狀來限制拼接,就相當于自帶邏輯限制一樣,使用起來非常方便,很适合青少年和初學者入門學習,如果感興趣可以自行下載學習。
26.1 海龜畫圖的原理
圖形模塊turtle啟用了一個非常生動的對象——海龜,這隻海龜可以在畫布上按照指令走路,它攜帶那隻畫筆默認的為“落筆”狀态,走路時會留下印痕。如果被置于“擡筆”狀态,走路是不留印痕的,但可以通過“落筆”命令使畫筆落下,這樣,它所走過的軌迹就變成了我們想要的各種圖形。可以設置畫筆的各種屬性如顔色、粗細等來改變圖形的外觀,也可以設置海龜的行為改變它的速度、方向等來改變圖形的形狀。
26.2 從畫正方形開始
這裡,仍然使用IDLE作為開發環境。
首先通過一個例子——“畫正方形”來講述如何使用Python繪圖。
>>> import turtle as t #導入海龜圖形模塊
>>> t.forward(100) #海龜前進100步
運行上面的命令後,會在海龜圖形窗口中出現如下圖形:一段從窗口中心位置出發的帶箭頭的線段。窗口的中心位置即為海龜的初始位置,并且初始狀态的海龜的頭是水平向右的。默認的是落筆狀态,所以前進時就會留下印痕。
我們并沒有看到海龜,因為默認的是用箭頭表示海龜,可以用如下命令顯示出海龜的造型。
>>> t.shape('turtle') #将turtle的形狀設置為“海龜”造型
此時,圖形窗口中的箭頭就變成了海龜的樣子,如下所示:
海龜的頭是水平向右的,和剛才箭頭所指的方向是一緻的。如果要再次切換為箭頭造型,可以使用如下命令即可:
>>> t.shape('arrow')
接下來我們繼續畫正方形:
>>> t.right(90) #海龜右轉90度
>>> t.forward(100) #海龜前進100步,畫第二條邊
>>> t.right(90)
>>> t.forward(100) #畫第三條邊
>>> t.right(90)
>>> t.forward(100) #畫第四條邊
至此,一個完整的正方形就畫出來了。
26.3 畫筆的常用設置
1、落筆函數pendown()
如:
>>> t.pendown()
無論當前畫筆的狀态如何,執行此命令後都将設置為落筆狀态。
2、擡筆函數penup()
如:
>>> t.penup()
無論當前畫筆的狀态如何,執行此命令後都将設置為擡筆狀态。
3、設置畫筆的顔色pencolor(color)
如:
>>> t.pencolor('yellow')
若不帶參數,則相當于查詢畫筆的當前顔色,如:
>>> t.pencolor()
'yellow'
4、設置畫筆的粗細pensize(n),默認值為1
如:
>>> t.pensize(10) #将畫筆的粗細值設為10
若不帶參數,則相當于查詢畫筆的當前顔色,如:
>>> t.pensize()
10
26.4 海龜設置
1、海龜速度用speed()函數來設置,可以設定的參數有:“slowest”(最慢)、“slow”(慢速)、“normal”(正常速度)、“fast”(快速)、“fastest”(最快)。例如:
>>> t.speed("slow")
>>> t.circle(100) #以當前位置為圓心,畫半徑為100的圓
執行後,由于速度設為了慢速,可以明顯看到比較緩慢的軌迹。
2、藏龜、顯龜、查詢海龜顯示狀态
如前所說,海龜通常是用箭頭表示,也可以表示為完整的海龜模樣,甚至是其他。所謂的“藏龜”,就是将該标識隐藏掉,這樣所繪的圖形就看起來更完整。為了更清楚的掌握海龜所處的位置和方向以及畫筆的顔色,可以通過“顯龜”命令将其顯示出來。
如:
>>> t.ht() #藏龜
>>> t.isvisible() #查詢海龜顯示狀态
False
>>> t.st() #顯龜
>>> t.isvisible() #查詢海龜顯示狀态
True
3、查詢海龜位置position()和将海龜移動到指定位置goto(x,y)
position()函數可以查詢海龜當前位置,goto(x,y)函數可以将海龜移動到指定位置,x、y為坐标值。
如:
>>> t.position() #查詢海龜當前位置
(-0.00,-0.00)
>>> t.goto(100,100) #将海龜移動到指定位置
>>> t.position() #查詢海龜當前位置
(100.00,100.00)
26.5 畫布設置
畫布就是可以用來繪圖的區域。
1、函數screensize()可以設置畫布的寬度、高度、背景。
格式:turtle.screensize(canvwidth=None,canvheight=None,bg=None)參數:canvwidth:畫布的寬度,canvheight:畫布的高度,bg:畫布的背景。
2、函數setup()可以設置畫布的位置,它的大小既可以根據占屏比來确定,也可以設置為用像素表示的絕對值。
格式:turtle.setup(width=0.5,height=0.75,startx=None,starty=None)width和height:寬和高,整數表示像素,小數表示占據屏幕的比例;startx和starty:表示矩形窗口左上角頂點的位置,為空,則位于屏幕中心。
26.6 設置窗口背景顔色bgcolor(color)
如:
>>> t.bgcolor('blue')
執行後窗口背景變為藍色。
26.7 實例:畫四個不同顔色的正多邊形
最後,我們用一個實例結束本章内容:由四個不同顔色的正多邊形組成的圖形。
代碼如下:
import turtle as t
t.screensize(canvwidth=600,canvheight=480,bg='Thistle') #設置窗口大小及顔色
t.reset() #初始化
t.ht() #藏龜
t.pensize(1) #設置畫筆的顔色
t.penup() #擡筆
#以下定義了一個畫正多邊形的函數,參數包括起始點的坐标、邊數、邊長、顔色
def polygon(x,y,n,l,color):
t.goto(x,y) #海龜移動到指定位置
t.pendown() #落筆
t.color(color) #隻有一個參數時,既是畫筆顔色,又是填充顔色
t.begin_fill() #開始填充
for i in range(n):
t.forward(l) #海龜前進邊長的步數
t.right(360/n) #右轉一個外角的角度
t.end_fill() #結束填充
t.penup() #擡筆
polygon(-100,100,3,100,'red')
#在(-100,100)位置開始畫邊長為100的正三邊形,顔色填充為紅色
polygon(100,100,4,80,'blue')
#在(100,100)位置開始畫邊長為80的正四邊形,顔色填充為藍色
polygon(100,-100,6,60,'Purple')
#在(100,-100)位置開始畫邊長為60的正六邊形,顔色填充為紫色
polygon(-100,-100,36,10,'Pink')
#在(-100,-100)位置開始畫邊長為10的正三十六邊形,顔色填充為粉色
運行後效果如下:
關于t.reset()
它的作用是初始化圖形窗口,可以清除窗口,并且使海龜回到最初的狀态(包括位置和方向)。所以,執行此命令後一切都将和剛剛打開圖形窗口時一樣。
類似的還有turtle.clear()和turtle.clearscreen()函數,也能起到清屏的作用。
關于t.right(360/n)
從如下三幅圖可以看出,畫正n邊形時,當畫完一條邊之後,隻需要将方向右轉360/n就是下一條邊的方向。
正三邊形
正四邊形
正六邊形
關于正三十六邊形
正三十六邊形已經接近于一個圓了,所以可以采用畫正多邊形的方法來畫圓。缺點是,一般隻知道起始點,不知道圓心的位置,半徑也不好計算。在已知圓心和半徑時,還是采用circle(r)命令更好一些。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!