海龜庫(Turtle)
-
海龜庫 (turtle) 是Python語言中一個很流行的繪制圖像的函數庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的坐標系原點,(0,0)位置開始,它根據一組函數指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制了圖形。
-
海龜庫積木盒有點類似Kitten創作工具的畫筆和動作積木盒的結合體,可以繪制、控制畫筆移動,大家使用一下就可以體會了哦。
-
在客戶端中,海龜圖的繪圖窗口與網頁端不同,是以彈窗的形式,在運行作品時出現的。你可以通過拖拽拉伸來調節海龜窗口的尺寸。
-
海龜圖和math庫、random庫一樣,需要先導入庫
import turtle
,才可以使用庫中的函數。使用海龜庫中的函數,你可以畫出各種有趣的圖形。
#1.畫筆
- 對應代碼:
import turtle #導入海龜庫 __Pen = turtle.Pen() #新建一個畫筆,默認命名為__Pen;專業的話來說:將turtle.Pen對象實例化,賦值給變量__Pen __Pen #__Pen就是上圖中的"畫筆"積木
這里為大家默認設置了畫筆(__Pen).【取這么奇怪的名字是因為希望大家新建變量的時候盡量避免使用同名變量!】
- 對應代碼:
import turtle t = turtle.Pen()
除了默認的畫筆,也可以自己新建變量,把變量設置為新的畫筆屬性。
看到上面兩個積木,大家可能有點疑惑了,什么對象啊,實例化啊,到底是什么意思呢?別擔心慢慢聽技術喵道來。
-
畫筆的概念:
-
在前面的《函數》中我們講到,Python中還有一種比函數更強大、更方便的數據類型,叫做“對象”。在這里,“畫筆”就是一個對象。
-
對於“對象”這個概念理解起來可能比較抽象,大家可以這樣理解,其實每只畫筆就是海龜圖上那個小小的箭頭,海龜圖可以支持同時有多個畫筆在運行,所以我們必須給每只畫筆取個名字,后面的積木才知道到底是哪個畫筆在執行命令。
-
一般情況下大家使用咱們默認的畫筆積木就可以了,如果設置了新的畫筆,后面所有包含 “畫筆”字樣的積木,必須要告訴他們是用默認畫筆,還是用新建的變量設置的畫筆。
-
#2.設置背景顏色
- 對應代碼:
import turtle turtle.bgcolor("#cc66cc")
-
含義:
填充海龜圖背景顏色,選擇顏色的方式有很多種,包括:
-
顏色下拉選項
這樣的方式非常直觀,顏色會翻譯成十六進制RGB顏色字符串。
turtle.bgcolor("#cc66cc") #十六進制RGB顏色字符串:#后面的六個字符,分別是3個2位的十六進制數,這三個數分別代表紅色、綠色、藍色三種顏色。由這三種顏色混合,可以形成人眼可以識別的幾乎各種顏色,
-
顏色單詞字符串
Python收錄了常見的各種顏色的英文單詞,常用的有:
'red', 'blue','white','green','black','purple','yellow','orange','pink'
用單詞字符串表示顏色,無論翻譯成代碼還是積木,都是單詞字符串。上圖積木轉換成的代碼是:
turtle.bgcolor('red')
-
RGB顏色字符串
-
顏色還可以由RGB來表示,RGB分別代表紅色、綠色、藍色三種顏色,由這三種顏色混合,可以形成人眼可以識別的幾乎各種顏色。
不過比較特殊的是,上面這種積木,不會在積木盒中直接出現,但是你仍然可以通過代碼書寫,然后轉換為積木:
turtle.bgcolor(255,255,0)
-
其他嵌套方式
顏色積木可以塞入變量和列表某一項,可以搭配實現更多的變換和功能。
#3.設置畫筆顏色
- 對應代碼:
import turtle __Pen = turtle.Pen() __Pen.pencolor("#cc66cc") #設置畫筆的顏色
- 含義:
-
設置特定畫筆的顏色。設置畫筆顏色的交互規則,與“設置背景顏色”積木完全相同。
-
可以類比Kitten創作工具中的畫筆積木盒。
-
#4.設置畫筆粗細
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.pensize(5) #設置畫筆粗細
-
含義:
- 設置畫筆的粗細。
- 畫筆的粗細的值為自然數。
- 可以類比Kitten創作工具中的畫筆積木盒。
#5.設置畫筆速度
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.speed(5) #設置畫筆運行速度
-
含義:
-
設置畫筆繪制的速度。
-
畫筆的速度的值為自然數。范圍為0-10。
-
當速度值為0時,畫筆將以非常快的速度運動,肉眼幾乎很難捕捉到。
-
#6.繪制圓
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.circle(50) #繪制圓
-
含義:
-
用畫筆繪制指定半徑的圓。
-
圓的半徑可以取整數、小數,也可以取正數、負數:
-
若半徑是正數,則畫筆以逆時針畫圓;
-
若半徑是負數,則畫筆以順時針畫圓。
-
-
#7.繪制點
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.dot(20) #繪制半徑
-
含義:
-
用畫筆繪制指定半徑的點。
-
圓的半徑可以取整數、小數,也可以取正數、負數。
-
若半徑是負數,則畫點時取其絕對值作為點的半徑。
-
#8.繪制正多邊形
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.circle(30, steps=5) #繪制外接圓半徑
-
含義:
-
用畫筆繪制正多邊形,所有的正多邊形都有外接圓,這里用外接圓的半徑來定義正多邊形的大小。
-
多邊形的邊數一般都是正整數。
-
邊數特殊情況下也可以是小數,則多邊形的邊無法正常閉合。
-
外接圓半徑可以取正數也可以取負數。
- 若取正數,則逆時針畫多邊形;
- 若取負數,則順時針畫多邊形。
-
#9.畫筆向前/向后移動
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.forward(100) #畫筆向前移動100 __Pen.backward(100) #畫筆向后移動100
-
含義:
-
使畫筆向前移動或向后移動。
-
同Kitten一樣,如果輸入的是負數,則會向當前相反的方向移動哦~
-
#10.畫筆向左/向右旋轉
- 對應代碼:
import turtle __Pen = turtle.Pen() __Pen.right(90) #畫筆向右旋轉 __Pen.left(90) #畫筆向左旋轉
- 含義:
- 使畫筆向右或向左旋轉。
- 同Kitten一樣,如果輸入的是負數,則會向當前相反的方向旋轉。
#11.畫筆面向
- 對應代碼:
import turtle __Pen = turtle.Pen() __Pen.setheading(30) #設置畫筆面向特定角度
- 含義:
-
設置畫筆朝向某個角度。
-
海龜圖的坐標系同Kitten舞台相似。右側水平方向為0度,角度向逆時針方向增加。
-
#12.移動畫筆到特定位置
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.goto(100,100) #在一定時間內畫筆移到特定的坐標位置
-
含義:
-
使畫筆移到特定坐標位置。
-
海龜圖同Kitten舞台相似,正中心為坐標原點,x軸正方向為水平向右方向;y軸正方向為豎直向上方向。
-
可以參考上面的坐標系圖。
-
#13.設置畫筆坐標
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.setx(100) #設置畫筆x坐標 __Pen.sety(100) #設置畫筆y坐標
-
含義:
-
分別設置畫筆x坐標,畫筆y坐標。
-
不同於Kitten可以瞬間設置畫筆x,y坐標,海龜圖會有肉眼可見的移動時間。
-
#14.設置畫筆填充色
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.fillcolor("#cc66cc") #設置圖形填充顏色 __Pen.begin_fill() #設置當前點為填充起點 __Pen.end_fill()#設置當前點為填充終點
-
含義:
- 這三塊積木經常搭配使用,可以填充海龜圖繪制的形狀或路徑。
- 填充色關於顏色積木的幾種用法跟上面的設置背景色積木一樣。
- 如果沒有設置填充顏色,會默認填充為黑色。
-
舉例:
代碼:
import turtle __Pen = turtle.Pen() #開始進入Python的世界 __Pen.fillcolor("#cc66cc") #設置填充色 __Pen.begin_fill() #設置為填充起點 __Pen.circle(50) #繪制一個圓 __Pen.end_fill() #設置為填充終點
#15.畫筆抬筆/落筆
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.pendown()#畫筆落筆 __Pen.penup() #畫筆抬筆
-
含義:
- 海龜圖默認畫筆落筆,這點和Kitten默認抬筆是不同的哦。
- 和Kitten類似,畫筆抬筆之后,移動畫筆的同時不會在畫布上留下痕跡;使用“落筆”積木,可以使畫筆落下,繼續作畫。
#16.清空畫筆
- 對應代碼:
import turtle __Pen = turtle.Pen() __Pen.clear() #清空畫筆
- 含義:
- 同Kitten類似,“清空畫筆”可以清空畫布上由該畫筆繪制的所有內容。
- 跟Kitten不同的是,在海龜圖中可以清除單只畫筆所繪制的痕跡。
#17.畫筆文字印章
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.write('Hello') #以默認樣式,繪制文字印章 __Pen.write('Hello', font = ('Arial', 8, 'normal')) #指定字體、字號、是否傾斜,繪制文字印章
-
含義:
- 文字印章,就是使用畫筆在畫布上,“印”出自己希望的內容,這些內容可以是字符串、數字、變量、列表等等。同Kitten類似,文字印章的顏色由畫筆本身的顏色決定,並且經常和可以運動的積木配合使用。
- 點擊積木右側的加號,可以通過參數,設置文字印章的字體、字號、類型等。文字類型為正常、傾斜、加粗。
#18.畫筆停止運行
-
對應代碼:
import turtle turtle.done()
-
含義:
- 在客戶端中,由於Python3本身的機制,海龜作圖結束時,畫布窗口就會關閉,這樣我們就會看不清楚自己畫的作品,為了避免這個問題,我們可以使用上述“畫筆停止運行”積木。只要把這塊積木緊接在海龜作圖程序的最后,作圖結束之后,圖像就會保留在屏幕上了!快來試試看吧!
#19. 畫筆的x坐標/y坐標
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.xcor() # 畫筆的x坐標 __Pen.ycor() # 畫筆的y坐標
-
含義:
- 在畫圖過程中,如果需要獲取畫筆位置,就需要用到這塊積木啦。積木的返回值即畫筆當前的x坐標或y坐標值。
#20. 隱藏/顯示畫筆
-
對應代碼:
import turtle __Pen = turtle.Pen() __Pen.hideturtle() # 隱藏畫筆 __Pen.showturtle() # 顯示畫筆
-
含義:
- 在畫圖過程中,如果有時需要畫筆消失,就可以使用這塊積木來控制畫筆隱藏、顯示哦。
#21. 生成對話框獲取字符輸入
-
對應代碼:
import turtle __Pen = turtle.Pen() turtle.textinput('對話框','請輸入字符')
-
含義:
- 當你需要圖形界面彈窗來獲取用戶輸入的字符內容時,可以使用上面這塊積木。
- 積木有兩個參數,標題和內容,分別對應圖中對話框頂部的標題和提示用戶輸入的內容。運行時,對話框會在海龜作圖畫布上方自動彈出。
- 積木返回值,為字符串格式。
#22. 生成對話框獲取數字輸入
-
對應代碼:
import turtle __Pen = turtle.Pen() turtle.numinput('對話框','請輸入數字') # 默認樣式 turtle.numinput('對話框','請輸入數字',0) # 點擊一次加號,設置默認返回值 turtle.numinput('對話框','請輸入數字',0,0) # 點擊兩次加號,設置最小值 turtle.numinput('對話框','請輸入數字',0,0,100)# 點擊三次加號,設置最大值
-
含義:
- 與上面的”生成對話框獲得字符輸入“積木類似,當你需要圖形界面彈窗來獲取用戶輸入的數值內容時,可以使用上面這塊積木。
- 積木有五個參數,最常用的兩個默認參數,仍然是標題和內容,分別對應圖中對話框頂部的標題和提示用戶輸入的內容。后面默認隱藏的三個參數,分別是:
- 默認值:對話框中默認顯示的數字。如上圖,若設置默認值為0,彈窗出現時文本框值為0;
- 最小值:允許用戶輸入的數字最小值。若輸入不符合范圍,點擊OK時會報錯;
- 最大值:允許用戶輸入的數字最大值。若輸入不符合范圍,點擊OK時會報錯。
- 運行時,對話框會在海龜作圖畫布上方自動彈出。
- 積木返回值,為數字格式。