方法
|
簡寫
|
描述
|
例子
|
移動和繪制
|
|||
forward()
|
fd()
|
前進
|
turtle.forward(10):前進10個單位 |
backward()
|
bk()、back()
|
后退
|
turtle.backward():后退10個單位
|
right()
|
rt()
|
右轉
|
turtle.rignt(30):向右旋轉30°
|
left
|
lt()
|
左轉
|
turtle.left(30):向左旋轉30°
|
goto()、setpos()、setposition()
|
|
定位/前往
|
turtle.goto(0,0):小烏龜移動到原點處
|
setx()
|
|
設置x坐標
|
turtle.setx(10):設置x坐標為10個單位
|
sety()
|
|
設置y坐標
|
turtle.sety(10):設置y坐標為10個單位
|
setheading()
|
seth()
|
設置朝向
|
turtle.seth(90):設置小烏龜為90度方向
|
home()
|
|
返回原點
|
turtle.home():小烏龜返回原點,並設置朝向為初始方向
|
circle()
|
|
畫圓
|
turtle.circle(100,360,6):畫出一個半徑為100的圓的內切六邊形
turtle.circle(100,180):畫出一條半徑為100,夾角為180度的圓弧
|
dot()
|
|
畫點
|
turtle.dot(10,'red'):畫出大小為10的紅點
|
stamp()
|
|
印章(光標指針形狀)
![]() ![]() |
turtle.stamp():在當前位置印制小烏龜形狀(光標指針形狀),返回印章id
|
clearstamp()
|
|
清除印章
|
turtle.clearstamp(指定印章id):清除指定印章
|
clearstamps()
|
|
清除多個印章
|
turtle.clearstamps(2):清除前2個印章
|
undo()
|
|
撤銷一個小烏龜動作
|
turtle.undo():撤銷一個小烏龜動作,使用for循環撤銷多個動作
|
speed()
|
|
設置畫筆速度
|
turtle.speed(10):設置【0-10】速度等級,數字越大越快
|
獲取小烏龜的狀態
|
|||
position()
|
pos()
|
獲取小烏龜當前坐標位置
|
turtle.position():獲取小烏龜當前坐標
|
towards()
|
|
目標方向(角度)
|
turtle.towards(0,0):假如小烏龜初始位置在(10,10),那么這個值為從這點到(0,0)之間的連線的夾角,方向和旋轉根據小烏龜的模式決定(standard、logo)
|
xcor()
|
|
獲取x坐標
|
turtle.xcor():返回當前小烏龜的x坐標
|
ycor()
|
|
獲取y坐標
|
turtle.ycor():返回當前小烏龜的y坐標
|
heading()
|
|
獲取朝向
|
turtle.heading():返回當前小烏龜的朝向
|
distance()
|
|
獲取距離
|
turtle.distance(0,0):假如小烏龜初始位置在(10,10),那么這個值為從這點到(0,0)之間的距離
|
設置與度量單位
|
|||
degrees()
|
|
設置角度
|
turtle.degrees(400):設置總的角度為400度,如果之前的總的角度為360度,且當前角度為90度,那么設置了400后,此時的當前位置度數為100度,計算:90/360=100/400
|
radians()
|
|
設置弧度
|
turtle.radians():設置角度為弧度,如當前角度為90度,設置后弧度為1.57,即90°=π/2≈1.57
|
繪圖狀態
|
|||
pendown()
|
pd()、down()
|
畫筆落下 |
turtle.down():畫筆落下
|
penup()
|
pu()、up()
|
畫筆抬起
|
turtle.up():畫筆抬起
|
pensize()
|
width()
|
設置畫筆粗細(大小)
|
turtle.pensize():設置畫筆大小
|
pen()
|
|
設置畫筆屬性
|
turtle.pen(fillcolor='yellow',pencolor='red',pensize='5'):設置多個畫筆屬性
|
isdown()
|
|
畫筆是否落下
|
turtle.isdown():判斷畫筆是否落下,返回布爾值
|
顏色控制
|
|||
color()
|
|
設置顏色
|
turtle.color('red','yellow'):設置和返回畫筆顏色為紅色,填充顏色為黃色
|
pencolor()
|
|
畫筆顏色
|
turtle.pencolor('red'):設置和返回畫筆顏色為紅色
|
fillcolor()
|
|
填充顏色
|
turtle.fillcolor('red'):設置和返回填充顏色為紅色
|
填充
|
|||
filling()
|
|
是否填充
|
turtle.filling():判斷是否填充,返回布爾值
|
begin_fill()
|
|
開始填充
|
turtle.begin_fill():在繪制要填充的圖形之前調用
|
end_fill()
|
|
結束填充
|
turtle.end_fill():從開始填充到畫完要填充的圖形后調用,結束填充
|
更多繪圖控制
|
|||
reset()
|
|
重置指定Turtle對象的小烏龜和繪圖
|
turtle.reset():刪除小烏龜繪制的圖形,並回到原點,所有設置回復默認值
|
clear()
|
|
清空指定Turtle對象所繪的圖形
|
turtle.clear():刪除指定小烏龜的繪圖,turtle為一個Turtle的對象,若有多個Turtle對象時,指定一個進行刪除
|
write()
|
|
書寫文本,turtle.write(arg,move='False',align='center',font=('Arial',8,'normal')):arg為寫的內容,align為對齊方式,
|
turtle.write('你好',True,align='center',font=('Arial',10,'normal')):在畫布中寫入文本為“你好”,以小烏龜位置居中,字體為Arial,大小為10,字體類型為正常,bold為加粗,寫完后小烏龜移動到文本的右下角(move為True)
|
可見性
|
|||
showturtle()
|
st()
|
顯示小烏龜
|
turtle.st():顯示小烏龜
|
hideturtle()
|
ht()
|
隱藏小烏龜
|
turtle.ht():隱藏小烏龜
|
isvisible()
|
|
是否可見
|
turtle.isvisible():判斷小烏龜是否可見,返回布爾值
|
外觀
|
|||
shape()
|
|
設置小烏龜形狀
|
turtle.shape('turtle'):設置小烏龜的形狀為烏龜, arrow:箭頭,turtle:龜,circle:圓,square:正方形,triangle:三角形,classic:經典
|
resizemode()
|
|
設置大小調整模式
|
turtle.resizemode('auto'):根據畫筆出席值調整小烏龜的外觀大小,“user”:根據拉伸因子和輪廓寬度值調整小烏龜的外觀,兩者是由shapesize()設置,“noresize”:默認不調整小烏龜的外觀大小
|
shapesize()
|
turtlesize()
|
設置小烏龜形狀大小,當且僅當大小調整模式設為“user”時起作用
|
|
shearfactor()
|
|
設置或返回當前的剪切因子,不改變小烏龜的朝向 |
turtle.shearfactor(1):設置小烏龜與x軸的正切值為1,拉伸小烏龜
![]() ![]() |
settiltangle()
|
|
設置傾角,不改變小烏龜的朝向
|
|
tiltangle()
|
|
設置或返回當前的傾角,不改變小烏龜的朝向
|
turtle.tiltangle():返回當前小烏龜的傾角
|
tilt()
|
|
設置小烏龜形狀自其當前的傾角轉動角度傾斜,不改變小烏龜的朝向
|
|
shapetransform()
|
|
設置或返回小烏龜形狀的當前變形矩陣
|
turtle.shapetransform(4,-1,0,2):(沒搞懂)
|
get_shapepoly()
|
|
返回以坐標值對元組表示的當前形狀多邊形
|
turtle.shapetransform(4,-1,0,2)
turtle.get_shapepoly():(沒搞懂)
|
使用事件(還沒理解透)
|
|||
onclick()
|
|
onclick(fun,btn=1,add=None):當鼠標點擊小烏龜時,執行函數(fun為傳入的函數),btn值(1為鼠標左鍵,2為鼠標中間鍵,3為鼠標右鍵),add為True則將添加一個新綁定
|
def trun(x,y):
right(90)
onclick(turn)
當鼠標點擊小烏龜時,執行函數trun,向右旋轉90°
|
onrelease()
|
|
onrelease(fun,btn=1,add=None):當鼠標點擊小烏龜釋放鼠標時,執行函數(fun為傳入的函數),btn值(1為鼠標左鍵,2為鼠標中間鍵,3為鼠標右鍵),add為True則將添加一個新綁定
|
def trun(x,y):
right(90)
onrelease(turn)
當鼠標點擊小烏龜釋放鼠標時,執行函數trun,向右旋轉90°
|
ondrag()
|
|
ondrag(fun,btn=1,add=None):當鼠標點擊小烏龜釋放鼠標時,執行函數(fun為傳入的函數),btn值(1為鼠標左鍵,2為鼠標中間鍵,3為鼠標右鍵),add為True則將添加一個新綁定
|
turtle.ondrag(turtle.goto):點擊並拖動小烏龜在畫布上移動手繪線條 |
特殊小烏龜方法
|
|||
begin_poly()
|
|
開始記錄多邊形
|
turtle.home()
turtle.begin_poly()
turtle.fd(100)
turtle.left(20)
turtle.fd(30)
turtle.left(60)
turtle.fd(50)
turtle.end_poly()
p = turtle.get_poly()
screen.register_shape("myFavouriteShape", p)
|
end_poly()
|
|
結束記錄多邊形
|
|
get_poly()
|
|
獲取多邊形
|
|
clone()
|
|
克隆一個Turtle對象
|
a = turtle.Turtle()
b = a.clone():克隆一個Turtle對象
|
getturtle()
|
getpen()
|
獲取小烏龜畫筆
|
a = turtle.getturtle():獲取一個Turtle對象 |
getscreen()
|
|
獲取屏幕
|
a = turtle.getscreen():獲取一個Screen對象 |
setundobuffer()
|
|
設置撤銷緩沖區
|
turtle.setundobuffer(50):設置撤銷緩沖區次數上限,最多只能撤銷50次小烏龜的動作 |
undobufferentries()
|
|
返回撤銷緩沖區條目數
|
turtle.undobufferentries():返回撤銷緩沖區里剩下的條目數 |
窗口控制
|
|||
bgcolor()
|
|
設置背景顏色
|
screen.bgcolor('white'):設置畫布背景顏色
|
bgpic()
|
|
設置背景圖片
|
screen.bgpic('C:\\Users\\Archer\\Pictures\\Camera Roll\\圖片.jpg'):設置背景圖片
|
clearscreen() |
clear()
|
從中刪除所有小烏龜的全部繪圖。將已清空的TurtleScreen重置為初始狀態:白色背景,無背景圖片,無事件綁定並啟用追蹤
|
screen.clearscreen():清除所有小烏龜繪圖,並重置狀態
|
resetscreen()
|
reset()
|
重置
|
screen.resetscreen():重置所有小烏龜為初始狀態,並清除所繪制的圖形,但使用clone()克隆的Turtle對象所畫的圖形滅有
|
screensize()
|
|
設置屏幕大小
|
screen.screensize(800,1000,'white'):設置寬為800,高為1000,背景顏色為白色的窗口,有滾動條
|
setworldcoordinates()
|
|
screen.setworldcoordinates(llx,lly,urx,ury):llx-為畫布左下角的x坐標,lly-為畫布左下角的y坐標,urx-為畫布右上角的x坐標, ury-為畫布右上角的y坐標
|
screen.setworldcoordinates(-50,-7.5,50,7.5):(沒搞懂怎么用)
|
動畫控制
|
|||
delay()
|
|
延遲(毫秒):連續兩次畫布刷新的間隔時間
|
screen.delay(5):設置延遲值為5毫秒
|
tracer()
|
|
tracer(n,delay):追蹤小烏龜的繪圖,當n為0或為False時,禁用追蹤,默認為1;delay為延遲(毫秒)
|
screen.tracer(8,25):沒第8次屏幕刷新會執行,延遲25毫秒(還不太懂怎么用)
|
update()
|
|
更新
|
screen.update():執行一次TurtleScreen刷新。在禁用追蹤時使用 |
使用屏幕事件
|
|||
listen()
|
|
監聽
|
screen.listen():監聽鍵盤的點擊操作,與鍵盤點擊事件一起用,沒有監聽,鍵盤操作無效果 |
onkeyrelease()
|
onkey()
|
當鍵盤按下並釋放
|
def up():
turtle.fd(10)
screen.listen()
screen.onkey(up,'Up'):按下鍵盤並釋放上方向鍵,執行up函數,前進10個單位
|
onkeypress()
|
|
當鍵盤按下
|
def up():
turtle.fd(10)
screen.listen()
screen.onkeypress(up,'Up'):按住鍵盤上方向鍵,一直執行up函數,就一直前進10個單位,松開鍵盤停止執行
|
onscreenclick()
|
onclick()
|
onclick(fun,btn=1,add=None):當鼠標點擊畫布屏幕時,執行函數(fun為傳入的函數),btn值(1為鼠標左鍵,2為鼠標中間鍵,3為鼠標右鍵),add為True則將添加一個新綁定
|
def turn(x,y):
turtle.right(90)
screen.onclick(turn):當鼠標點擊畫布屏幕時執行turn函數
|
ontimer() |
|
screen.ontimer(fun,t=0):定時器,在達到t毫秒后,執行fun函數
|
def up():
turtle.fd(10)
screen.ontimer(up,1000):程序執行1秒后,執行up函數,前進10個單位
|
mainloop()
|
done()
|
主循環
|
screen.mainloop():開始事件循環,必須作為一個小烏龜繪圖程序的結束語句,否則程序會被關閉
|
設置與特殊方法
|
|||
mode()
|
|
設置小烏龜的模式
"standard"模式:初始方向(朝右),逆時針,默認模式
"logo"模式:初始方向(朝上),順時針
|
screen.mode('logo'):設置小烏龜模式為logo模式
|
colormode() |
|
screen.colormode(cmode):設置顏色模式,cmode值為1.0或255,構成顏色的RGB三元組數字必須在0-cmode范圍之間,默認數值為1.0
|
|
getcanvas()
|
|
獲取畫布對象
|
cv = screen.getcanvas():獲取畫布對象,沒搞懂怎么用
|
getshapes()
|
|
獲取所有小烏龜的形狀信息
|
screen.getshapes():返回當前所有小烏龜的形狀的列表
|
register_shape()
|
addshape()
|
添加一個gif格式的圖片到圖形列表中
|
screen.register_shape('C:\\Users\\Archer\\Pictures\\Camera Roll\\太極.gif')
print(screen.getshapes())
再通過turtle.shape('C:\\Users\\Archer\\Pictures\\Camera Roll\\太極.gif')設置小烏龜形狀
|
turtles()
|
|
獲取所有小烏龜的對象列表
|
screen.turtles():返回屏幕上所有小烏龜的對象列表
|
window_height()
|
|
獲取窗口高度
|
screen.window_height():返回窗口高度
|
window_width()
|
|
獲取窗口寬度
|
screen.window_width():返回窗口寬度
|
輸入方法
|
|||
textinput()
|
|
screen.textinput(title,prompt):文本輸入,title為窗口標題,prompt為提示輸入信息
|
screen.textinput('新年問候','你好'):彈出一個對話框窗口用來輸入一個字符串,輸入后返回這個字符串,取消返回None
|
numinput()
|
|
screen.numinput(title,prompt,default,minval,maxval):數字輸入,title為窗口標題,prompt為提示輸入信息,default為默認值,minval為最小值,maxval為最大值
|
screen.numinput('調查問卷','請問你多少歲了',18,0,150):彈出一個對話框窗口用來輸入一個數字,輸入后返回這個數值,取消返回None
|
Screen專有方法
|
|||
bye()
|
|
退出
|
screen.bye():關閉繪圖窗口 |
exitonclick()
|
|
當鼠標左鍵點擊時退出窗口
|
screen.exitonclick():鼠標左鍵點擊后關閉窗口
|
setup()
|
|
screen.setup(w,h,x,y):設置主窗口大小和位置,w為寬度(像素),如為浮點數,則表示屏幕占比,h為高度,x為初始位置距離屏幕左邊多少像素,y為初始位置距離屏幕上邊多少像素,沒有設置xy默認居中
|
screen.setup(500,500,0,0):窗口大小為寬500像素,高為500像素,在屏幕左上角打開窗口
|
title()
|
|
設置窗口標題
|
screen.title('Welcome to the turtle zoo!'):設置窗口標題
|