在Python中,「turtle.done()」的作用是暫停程序,停止畫筆繪製,但繪圖窗體不關閉,直到用戶關閉Python Turtle圖形化視窗為止;它的目的是給用戶時間來查看圖形,沒有它,圖形視窗會在程式完成是立即關閉。
本教學操作環境:windows7系統、Python3版、Dell G3電腦。
turtle.done()的作用:暫停程序,停止畫筆繪製,但繪圖窗體不關閉,直到使用者關閉Python Turtle圖形化視窗為止。
Turtle庫是Python語言中一個很流行的繪製圖像的函數庫,想像一個小烏龜,在一個橫軸為x、縱軸為y的坐標係原點,(0,0 )位置開始,它根據一組函數指令的控制,在這個平面座標系中移動,從而在它爬行的路徑上繪製了圖形。
#1. 畫布(canvas)
畫布是turtle為我們展開用於繪圖區域,我們可以設定它的大小和初始位置。
設定畫布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),寬 bg=None),分別為畫布的參數(單位像素), 高, 背景顏色。
如:turtle.screensize(800,600, "green")
turtle.# turtle.#
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),參數:width, height: 輸入寬和高為整數時,表示像素; 為小數時, 表示佔據電腦螢幕的比例,(startx, starty): 這一座標表示矩形視窗左上角頂點的位置, 如果為空,則視窗位於螢幕中心。
如:turtle.setup(width=0.6,height=0.6)
#
# =800, startx=100, starty=100)
#2. 畫筆2.1 畫筆的狀態
在畫布上,預設有一個座標原點為畫布中心的座標軸,座標原點上有一隻面朝x軸正方向小烏龜。這裡我們描述小烏龜時使用了兩個字:座標原點(位置),面向x軸正方向(方向), turtle繪圖中,就是使用位置方向描述小烏龜(畫筆)的狀態。
2.2 畫筆的屬性
畫筆(畫筆的屬性,色彩、畫線的寬度等)
1) turtle.pensize():設定畫筆的寬度;
2) turtle.pencolor():沒有 2) turtle.pencolor():沒有
2) turtle.pencolor():沒有2) turtle.pencolor():沒有 2) turtle.pencolor():沒有 2) turtle.pencolor():沒有 參數傳入,傳回目前畫筆顏色,傳入參數設定畫筆顏色,可以是字串如"green", "red",也可以是RGB 3元組。
3) turtle.speed(speed):設定畫筆移動速度,畫筆所畫出的速度範圍[0,10]整數,數字越大越快。
2.3 繪圖指令
操縱海龜繪圖有著許多的指令,這些指令可以分為3種:一種為運動指令,一種為畫筆控制指令,還有一種是全域控制指令。 (1) 畫筆動作指令 |
|
################################################################################## ###########說明#########################turtle.forward(distance)###### |
向目前畫筆方向移動distance像素長度 |
#turtle.backward(distance) |
向目前畫筆相反方向移動distance像素長度 |
# #turtle.right(degree) |
順時針移動degree° |
turtle.left(degree) |
#逆時針移動degree° |
turtle.pendown() |
#移動時繪製圖形,缺省時也繪製 |
#turtle.goto(x,y)
|
#將畫筆移到座標為x,y的位置
|
turtle.penup()
|
提起筆移動,不繪製圖形,用於另一個地方繪製
|
#turtle.circle()
|
畫圓,半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓
|
setx( )
|
將目前x軸移到指定位置
|
sety( )
|
#將目前y軸移到指定位置
|
setheading(angle)
|
#設定目前朝向為angle角度
|
home()
|
#設定目前畫筆位置為原點,朝向東。
|
繪製一個指定直徑與顏色的圓點
(2) 畫筆控制指令 |
|
指令
|
|
##turtle.fillcolor(colorstring)
|
#繪製圖形的填滿顏色
|
# #填入完成 |
|
隱藏畫筆的turtle形狀 |
(3) 全域控制指令
#指令 |
|
##說明 |
|
清空turtle窗口,但是turtle的位置和狀態不會改變 |
|
清空窗口,重置turtle狀態為起始狀態 |
|
撤銷上一個turtle動作 |
|
傳回目前turtle是否可見 |
##stamp() |
#複製目前圖形
turtle.write(s [,font=("font-name",font_size,"font_type")]) |
寫文本,s為文本內容, font是字體的參數,分別為字體名稱,大小和類型;font為可選項,font參數也是可選項 |
( 4) 其他指令 |
#指令 #turtle.mainloop()或turtle.done() |
啟動事件循環 - 呼叫 |
Tkinter 的mainloop函數。 必須是烏龜圖形程式中的最後一個語句。 | turtle.mode(mode=None)
##設定烏龜模式( | 「standard」,「logo」或 | 「world ”
模式初始龜標題正角度standard向右(東)逆時針logo向上(北)順時針 |
turtle.delay(delay=None) |
#設定或傳回以毫秒為單位的繪圖延遲。 |
turtle.begin_poly() |
開始記錄多邊形的頂點。目前的烏龜位置是多邊形的第一個頂點。 |
turtle.end_poly() |
3. 指令詳解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以給設定半徑畫圓
參數:
## radius(半徑):半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓;
extent(弧度) (optional);
steps (optional) (做半徑為radius的圓的內切 steps (optional) (做半徑為radius的圓的內切正多邊形,多邊形邊數為steps)。
範例:
circle(50) # 整圓;
circle(50, steps=3) # 三角形;
circle(120, 180) # 半圓
##實例:
#1、太陽花
# 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()
2、五角星
# coding=utf-8 import turtle import time turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolor("red") turtle.begin_fill() for _ in range(5): turtle.forward(200) turtle.right(144) turtle.end_fill() time.sleep(2) turtle.penup() turtle.goto(-150,-120) turtle.color("violet") turtle.write("Done", font=('Arial', 40, 'normal')) turtle.mainloop()
#3、時鐘程式
# coding=utf-8 import turtle from datetime import * # 抬起画笔,向前运动一段距离放下 def Skip(step): turtle.penup() turtle.forward(step) turtle.pendown() def mkHand(name, length): # 注册Turtle形状,建立表针Turtle turtle.reset() Skip(-length * 0.1) # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。 turtle.begin_poly() turtle.forward(length * 1.1) # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。 turtle.end_poly() # 返回最后记录的多边形。 handForm = turtle.get_poly() turtle.register_shape(name, handForm) def Init(): global secHand, minHand, hurHand, printer # 重置Turtle指向北 turtle.mode("logo") # 建立三个表针Turtle并初始化 mkHand("secHand", 135) mkHand("minHand", 125) mkHand("hurHand", 90) secHand = turtle.Turtle() secHand.shape("secHand") minHand = turtle.Turtle() minHand.shape("minHand") hurHand = turtle.Turtle() hurHand.shape("hurHand") for hand in secHand, minHand, hurHand: hand.shapesize(1, 1, 3) hand.speed(0) # 建立输出文字Turtle printer = turtle.Turtle() # 隐藏画笔的turtle形状 printer.hideturtle() printer.penup() def SetupClock(radius): # 建立表的外框 turtle.reset() turtle.pensize(7) for i in range(60): Skip(radius) if i % 5 == 0: turtle.forward(20) Skip(-radius - 20) Skip(radius + 20) if i == 0: turtle.write(int(12), align="center", font=("Courier", 14, "bold")) elif i == 30: Skip(25) turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) Skip(-25) elif (i == 25 or i == 35): Skip(20) turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) Skip(-20) else: turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) Skip(-radius - 20) else: turtle.dot(5) Skip(-radius) turtle.right(6) def Week(t): week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"] return week[t.weekday()] def Date(t): y = t.year m = t.month d = t.day return "%s %d%d" % (y, m, d) def Tick(): # 绘制表针的动态显示 t = datetime.today() second = t.second + t.microsecond * 0.000001 minute = t.minute + second / 60.0 hour = t.hour + minute / 60.0 secHand.setheading(6 * second) minHand.setheading(6 * minute) hurHand.setheading(30 * hour) turtle.tracer(False) printer.forward(65) printer.write(Week(t), align="center", font=("Courier", 14, "bold")) printer.back(130) printer.write(Date(t), align="center", font=("Courier", 14, "bold")) printer.home() turtle.tracer(True) # 100ms后继续调用tick turtle.ontimer(Tick, 100) def main(): # 打开/关闭龟动画,并为更新图纸设置延迟。 turtle.tracer(False) Init() SetupClock(160) turtle.tracer(True) Tick() turtle.mainloop() if __name__ == "__main__": main()
更多電腦程式相關知識,請造訪:程式設計影片! !
以上是turtle.done()的作用是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!