簡介: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()
第三步:移動海龜。
t.forward(50)
forward的中文意思是“向前地;促進”。所以這行程式碼的意思是海龜向前移動50個畫素:
t.left(90)
讓海龜左轉90度
現在我們可以嘗試畫一個方塊,思路就是前進-轉向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)
效果如下:
第四步:擦除畫布。
>>>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個畫素
效果如下:
例項: 繪製太陽花
# 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()
效果:
總結
剛開始學用turtle模組作畫,感覺就像小學剛開始作畫一樣。從前是拿起筆直接在紙上畫,到現在使用Python作畫時,感覺是把從前作畫的動作分解開:準備畫布——拿起筆準備作畫——開始作畫——放下筆不再作畫。感覺很有趣,慢慢來,這才只是剛開始。