程式設計入門 06:Python 海龜繪圖
現在讓我們開始嘗試圖形使用者界面 (GUI) 程式的編寫 Python 标準庫中有個 turtle 子產品, 可以生成标準的應用程式視窗進行圖形繪制 turtle 的繪圖方式非常簡單直覺想象有一隻尾巴上蘸着顔料的小海龜在電腦螢幕上爬行, 随着它的移動就能畫出線條來, turtle 程式視窗的繪圖區域使用直角坐标系, 海龜的初始位置在視窗繪圖區正中的 (0,0) 點, 頭朝 x 軸的正方向你可以先在互動模式中引入子產品并練習其中的函數:In[1]:importturtleastt
In[2]:tt.setup()# 設定畫布, 這将立即顯示繪圖視窗
In[3]:tt.forward(100)# 前進 100 像素, 這将畫出一條橫向線段
In[4]:tt.right(90)# 右轉 90 度, 這将改變海龜的朝向
In[5]:tt.forward(100)# 這将畫出一條縱向線段
In[6]:tt.goto(0,0)# 前往原點, 這将完成一個等腰直角三角形
In[7]:tt.bye()# 關閉繪圖視窗
利用 tutle 子產品能夠更生動地學習流程控制概念, 以下程式可以畫出一個五角星畫一條線段并右轉 144 度, 如此重複五次:importturtleastt
tt.TurtleScreen._RUNNING=True# 啟動繪圖, 在 IDE 中運作加這句可避免報錯
cnt=0
whilecnt<5:
tt.forward(200)
tt.right(144)
cnt+=1
tt.done()# 結束繪圖, 這将不會關閉視窗
以下程式連續畫了 500 條線段, 每一條線段的顔色都随機, 每一條線段都比前一條長 1 個像素, 每畫一條線段之後都向右轉 91 度于是我們得到了一個繁複的彩色螺旋圖案:importturtleastt
fromrandomimportrandint
tt.TurtleScreen._RUNNING=True
tt.speed(0)# 繪圖速度為最快
tt.bgcolor("black")# 背景色為黑色
cnt=0
tt.setpos(-25,25)# 改變初始位置, 這可以讓圖案居中
tt.colormode(255)# 顔色模式為真彩色
whilecnt<500:
r=randint(0,255)
g=randint(0,255)
b=randint(0,255)
tt.pencolor(r,g,b)# 畫筆顔色每次随機
tt.forward(50+cnt)
tt.right(91)
cnt+=1
tt.done()

06_turtle.png
接下來讓我們靈活運用 turtle 子產品的互動功能, 把上次編寫的指令行式猜數遊戲改造成圖形界面的請把程式檔案命名為 guessnum.pyw, 這樣當你在作業系統中直接輕按兩下時就不會再打開黑色的指令行視窗擷取使用者輸入可以使用對話框, 回報資訊則可以直接顯示在視窗繪圖區域中:fromrandomimportrandint
importturtleastt
tt.TurtleScreen._RUNNING=True
tt.setup(width=800,height=450,startx=None,starty=None)# 設定自定義的視窗大小
tt.hideturtle()# 隐藏畫筆圖示
tt.color("blue")# 畫筆顔色為藍色
tt.penup()# 擡起畫筆, 移動時不畫線
tt.setpos(-300,0)# 設定初始位置
myfont=("黑體",16,"normal")# 定義字型
target=randint(1,100)
tt.write("我想了一個 1 到 100 之間的整數, 請你猜猜看吧:",font=myfont)# 輸出文本
guess=0
answer=""
whileguess!=target:
# 使用對話框擷取使用者輸入
guess=tt.simpledialog.askinteger("猜數遊戲","請輸入一個整數:")
ifguess==target:
answer="你猜對了! 遊戲結束"
elifnotguess:# 使用者沒有輸入數字則中斷循環
tt.clear()# 清空畫布以便輸出新文本
tt.write("你放棄了, 遊戲結束",font=myfont)
break
elifguess>target:
answer="你猜大了, 再猜一次:"
else:
answer="你猜小了, 再猜一次:"
tt.clear()
tt.write(answer,font=myfont)
tt.done()

06_turtle_guess.png
海龜繪圖很有趣, 你可以檢視官方線上文檔以了解 turtle 子產品的更多細節 https://docs.python.org/3.6/library/turtle.html
程式設計原來是這樣
程式設計小提示: 子產品的運作
Python 标準庫中還有一個 turtledemo 子產品, 這是 turtle 繪圖功能示範程式, 輸入以下系統指令即可運作 turtledemo 子產品:
python -m turtledemo
隻要子產品中定義了可運作對象(實作功能或用于測試), 子產品就是可運作的實際上, 你也可以輸入以下系統指令來運作 turtle 子產品:
python -m turtle
來源: http://www.jianshu.com/p/5339bf4d5e97