Python的畫圖模組turtle使用詳解

pythontab發表於2017-11-21

簡介:Turtle是Python語言中一個很流行的簡單的繪圖工具。你可以把它理解為一個小海龜,只聽得懂有限的指令。它在一個橫軸為x、縱軸為y的座標系原點,(0,0)位置開始,它根據一組函式指令的控制,在這個平面座標系中移動,從而在它爬行的路徑上繪製了圖形。

turtle繪圖的基礎知識:

1. 畫布(canvas)

畫布就是turtle為我們展開用於繪圖區域,我們可以設定它的大小和初始位置。

設定畫布大小

turtle.screensize(canvwidth=None, canvheight=None, bg=None),引數分別為畫布的寬(單位畫素), 高, 背景顏色。

如:

turtle.screensize(800,600, "green")

turtle.screensize() #返回預設大小(400, 300)

turtle.setup(width=0.5, height=0.75, startx=None, starty=None),引數:width, height: 輸入寬和高為整數時, 表示畫素; 為小數時, 表示佔據電腦螢幕的比例,(startx, starty): 這一座標表示矩形視窗左上角頂點的位置, 如果為空,則視窗位於螢幕中心。

如:

turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800, startx=100, starty=100)

2. 畫筆

2.1 畫筆的狀態

在畫布上,預設有一個座標原點為畫布中心的座標軸,座標原點上有一隻面朝x軸正方向小烏龜。這裡我們描述小烏龜時使用了兩個詞語:座標原點(位置),面朝x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。

2.2 畫筆的屬性

畫筆(畫筆的屬性,顏色、畫線的寬度等)

1) turtle.pensize():設定畫筆的寬度;

2) turtle.pencolor():沒有引數傳入,返回當前畫筆顏色,傳入引數設定畫筆顏色,可以是字串如"green", "red",也可以是RGB 3元組。

3) turtle.speed(speed):設定畫筆移動速度,畫筆繪製的速度範圍[0,10]整數,數字越大越快。


3.繪圖視窗的原點(0,0)在正中間。預設情況下,海龜向正右方移動。

4.操縱海龜繪圖有著許多的命令,這些命令可以劃分為兩種:一種為運動命令,一種為畫筆控制命令

(1)運動命令:

forward(d) 向前移動距離d代表距離

backward(d) 向後移動距離d代表距離

right(degree) 向右轉動多少度

left(degree) 向左轉動多少度

goto(x,y) 將畫筆移動到座標為(x,y)的位置

stamp() 繪製當前圖形

speed(speed) 畫筆繪製的速度範圍[0,10]整數


(2)畫筆控制命令:

down() 畫筆落下,移動時繪製圖形

up() 畫筆抬起,移動時不繪製圖形

setheading(degree) 海龜(turtle)朝向,degree代表角度

reset() 恢復所有設定

pensize(width) 畫筆的寬度

pencolor(colorstring) 畫筆的顏色

fillcolor(colorstring) 繪製圖形的填充顏色

circle(radius, extent) 繪製一個圓形,其中radius為半徑,extent為度數,例如若extent為180,則畫一個半圓;如要畫一個圓形,可不必寫第二個引數


使用Python的turtle(海龜)模組畫圖

第一步:讓Python引入turtle模組,引入模組就是告訴Python你想要用它。

importturtle

第二步:建立畫布。呼叫turtle中的Pen函式。

t=turtle.Pen()

Python的畫圖模組turtle使用詳解

第三步:移動海龜。

t.forward(50)

forward的中文意思是“向前地;促進”。所以這行程式碼的意思是海龜向前移動50個畫素:

Python的畫圖模組turtle使用詳解

t.left(90)

讓海龜左轉90度

Python的畫圖模組turtle使用詳解


現在我們可以嘗試畫一個方塊,思路就是前進-轉向90度-前進,迴圈四次。

>>> t.forward(50)
>>> t.left(90)
>>> t.forward(50)
>>> t.left(90)
>>> t.forward(50)
>>> t.left(90)
>>> t,forward(50)
>>> t.left(90)
>>> t,forward(50)

效果如下:

Python的畫圖模組turtle使用詳解

第四步:擦除畫布。

>>>t.reset()

重置命令(reset)這會清除畫布並把海龜放回開始的位置。

>>>t.clear()

清除命令(clear)只清除螢幕,海龜仍停留在原位。

我們還可以讓海龜向右(right)轉,或者讓它後退(backward)。我們可以用向上(up)來把筆從紙上抬起來(換句話說就是讓海龜停止作畫),用向下(down)來開始作畫。

下面我們綜合運用一下,畫兩條線。

>>> t.reset() //擦除畫布並把海龜移回到開始位置
>>> t.backward(100) //後退100個畫素
>>> t.up() // 抬筆不再作畫
>>> t.right(90) //向右轉90度
>>> t.forward(20) //前進20個畫素
>>> t.left(90) //向左轉90度
>>> t.down() //下筆準備作畫
>>> t.forward(100) //前進100個畫素

效果如下:

Python的畫圖模組turtle使用詳解


例項: 繪製太陽花

# coding=utf-8
import turtle
import time
# 同時設定pencolor=color1, fillcolor=color2
turtle.color("red", "yellow")
turtle.begin_fill()
for _ in range(50):
turtle.forward(200)
turtle.left(170)
turtle.end_fill()
turtle.mainloop()


效果:

Python的畫圖模組turtle使用詳解


總結

剛開始學用turtle模組作畫,感覺就像小學剛開始作畫一樣。從前是拿起筆直接在紙上畫,到現在使用Python作畫時,感覺是把從前作畫的動作分解開:準備畫布——拿起筆準備作畫——開始作畫——放下筆不再作畫。感覺很有趣,慢慢來,這才只是剛開始。


相關文章