Turtle庫 簡介
什么是Turtle
首先懊直,turtle庫是一個點線面的簡單圖像庫笔宿,能夠完成一些比較簡單的幾何圖像可視化。它就像一個小烏龜稳摄,在一個橫軸為x稚字、縱軸為y的坐標(biāo)系原點,(0,0)位置開始厦酬,它根據(jù)一組函數(shù)指令的控制胆描,在這個平面坐標(biāo)系中移動,從而在它爬行的路徑上繪制了圖形仗阅。
Turtle庫基礎(chǔ)知識
1.畫布(canvas)
畫布就是turtle為我們展開用于繪圖區(qū)域默認(rèn)大小(400, 300)昌讲,我們可以設(shè)置它的大小和初始位置。
2.畫筆(pen)
2.1畫筆的狀態(tài)
在畫布上减噪,默認(rèn)有一個坐標(biāo)原點為畫布中心的坐標(biāo)軸短绸,坐標(biāo)原點上有一只面朝x軸正方向小烏龜。這里我們描述小烏龜時使用了兩個詞語:坐標(biāo)原點(位置)筹裕,面朝x軸正方向(方向)醋闭, turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態(tài)饶碘。
2.2 畫筆的屬性
畫筆(畫筆的屬性目尖,顏色、畫線的寬度等)
1)turtle.pensize():設(shè)置畫筆的寬度扎运;
2)turtle.pencolor():沒有參數(shù)傳入瑟曲,返回當(dāng)前畫筆顏色,傳入?yún)?shù)設(shè)置畫筆顏色豪治,可以是字符串如"green",?"red",也可以是RGB3元組洞拨。
3)turtle.speed(speed):設(shè)置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數(shù)负拟,數(shù)字越大越快烦衣。
2.3 繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:一種為運動命令掩浙,一種為畫筆控制命令花吟,還有一種是全局控制命令。
2.3.1 畫筆運動命令:
命令說明
turtle.home()將turtle移動到起點(0,0)和向東
turtle.speed(speed)畫筆繪制的速度范圍[0,10]整數(shù)
turtle.forward(distance)向當(dāng)前畫筆方向移動distance像素長
turtle.backward(distance)向當(dāng)前畫筆相反方向移動distance像素長度
turtle.right(degree)順時針移動degree°
turtle.left(degree)逆時針移動degree°
turtle.pendown()移動時繪制圖形放下筆,,默認(rèn)繪制
turtle.penup()移動時不繪制圖形,提起筆厨姚,用于另起一個地方繪制時用
turtle.circle(r,extent,step)繪制一個指定半徑衅澈、弧度范圍、階數(shù)(正多邊形)的圓
turtle.dot(diameter,color)繪制一個指定直徑和顏色的圓
2.3.2 畫筆控制命令:
命令說明
turtle.pencolor()畫筆顏色
turtle.pensize(width)畫筆寬度(繪制圖形時的寬度)
turtle.color(color1, color2)同時設(shè)置pencolor=color1, fillcolor=color2
turtle.filling()返回當(dāng)前是否在填充狀態(tài)
turtle.begin_fill()準(zhǔn)備開始填充圖形
turtle.end_fill()填充完成
turtle.hideturtle()隱藏畫筆的turtle形狀
turtle.showturtle()顯示畫筆的turtle形狀
2.3.3 全局控制命令
命令說明
turtle.clear()清空turtle窗口谬墙,但是turtle的位置和狀態(tài)不會改變
turtle.reset()清空窗口今布,重置turtle狀態(tài)為起始狀態(tài)
turtle.undo()取消最后一個圖的操作
turtle.isvisible()返回當(dāng)前turtle是否可見
turtle.stamp()復(fù)制當(dāng)前圖形
turtle.write(s , [font=("font-name",font_size,"font_type")])寫文本经备,s為文本內(nèi)容,font是字體的參數(shù)部默,分別為字體名稱侵蒙,大小和類型;font為可選項傅蹂,font參數(shù)也是可選項
2.2.3其他命令
命令說明
turtle.mainloop()或turtle.done()啟動事件循環(huán) -調(diào)用Tkinter的mainloop函數(shù)纷闺。必須是烏龜圖形程序中的最后一個語句。
turtle.mode(mode=None)設(shè)置烏龜模式(“standard”贬派,“l(fā)ogo(向北或向上)”或“world()”)并執(zhí)行重置急但。如果沒有給出模式,則返回當(dāng)前模式搞乏。
turtle.undo()取消最后一個圖的操作
turtle.isvisible()返回當(dāng)前turtle是否可見
turtle.stamp()復(fù)制當(dāng)前圖形
turtle.write(s , [font=("font-name",font_size,"font_type")])寫文本波桩,s為文本內(nèi)容,font是字體的參數(shù)请敦,分別為字體名稱镐躲,大小和類型;font為可選項侍筛,font參數(shù)也是可選項
Turtle總結(jié)和展示
Turtle可以實現(xiàn)很多好玩的東西萤皂,例如我在知乎和其他地方看到別人畫“小豬佩奇”,“叮當(dāng)貓”匣椰,“花花草草”等裆熙,世界很大,還有很多好玩的等著我們G菪ΑH肼肌!
defmain():
????setting()#畫布佳镜、畫筆設(shè)置
????nose(-100,100)#鼻子
????head(-69,167)#頭
????ears(0,160)#耳朵
????eyes(0,140)#眼睛????
????cheek(80,10)#腮
????mouth(-20,30)#嘴
????body(-32,-8)#身體
????hands(-56,-45)#手
????foot(2,-177)#腳
????tail(148,-155)#尾巴
????done()#結(jié)束
代碼:https://github.com/SCUTPZW/-visualization
https://github.com/AnthonyCoder/PythonSample/tree/master/turtle
主要參考:http://www.reibang.com/p/df81a110cdfd
//www.zhihu.com/question/275611095/answer/382959285
附帶解決No Module named tkinker的問題
https://blog.csdn.net/qq_33144323/article/details/80556954