前言
官方用的GUI工具包——Tkinter(IDLE就是用這個開發的)。Tkinter是Python的標準GUI庫,它實際是建立在Tk技術上的。在大多數Unix平臺以及Windows系統上都可用。作為 python 特定的GUI介面,是一個影象的視窗,tkinter是python 自帶的,可以編輯的GUI介面,我們可以用GUI 實現很多直觀的功能,比如想開發一個計算器,如果只是一個鍵盤輸入,輸出的黑色視窗,是沒用使用者體驗的。所有開發一個影象化的小視窗,就是必要的。對於稍有GUI程式設計經驗的人來說,Python的Tkinter介面庫是非常簡單的。python的GUI庫非常多,選擇Tkinter,一是最為簡單,二是自帶庫,不需下載安裝,隨時使用,三則是從需求出發,Python作為一種指令碼語言,或者說一種膠水語言,一般不會用它來開發複雜的桌面應用,它並不具備這方面的優勢,使用Python,可以把它作為一個靈活的工具,而不是作為主要開發語言,那麼在工作中,需要製作一個小工具,肯定是需要有介面的,不僅自己用,也能分享別人使用,在這種需求下,Tkinter是足夠勝任的!
Tkinter是Python預設的GUI庫,像IDLE就是用Tkinter設計出來的,因此直接匯入Tkinter模組就可以了:
Tkinter之初體驗接下來從最簡單的例子入手:
import tkinter import tkinter as tk # 建立一個主視窗,用於容納整個GUI程式 root = tk.Tk() # 設定主視窗物件的標題欄 root.title("First Demo") # 新增一個Label元件,Label元件是GUI程式中最常用的元件之一。 # Label元件可以顯示文字、圖示或者圖片 # 在這裡我們讓它顯示指定文字 theLabel = tk.Label(root, text="我的第一個tkinter視窗!") # 然後呼叫Label元件的pack()方法,用於自動調節元件自身的尺寸 theLabel.pack() # 注意,這時候視窗還是不會顯示的… # 除非執行下面這條程式碼! root.mainloop()
執行程式,如圖所示。
loop因為是迴圈的意思,root.mainloop就會讓root不斷的重新整理,如果沒有mainloop,就是一個靜態的root,傳入進去的值就不會有迴圈,mainloop就相當於一個很大的while迴圈,有個while,每點選一次就會更新一次,所以我們必須要有迴圈。
所有的視窗檔案都必須有類似的mainloop函式,mainloop是視窗檔案的關鍵的關鍵。
意思是一旦進入了主事件迴圈,就由Tkinter掌管一切了。現在不理解沒關係,在後面的學習中你會有深刻的體會。GUI程式的開發與以往的開發經驗會有截然不同的感受。
通常如果要寫一個比較大的程式,那麼應該先把程式碼給封裝起來。在面向物件的程式語言中,就是封裝成類。看下面進階版的例子:
import tkinter as tk def create_button(root): # 建立一個按鈕元件 # fg 是 foreground 的縮寫, 就是設定前景色的意思 say_hello = tk.Button(root, text='打招呼', fg='blue', command=eat) say_hello.pack() return root def eat(): print('今天你吃飯了嗎?')root = tk.Tk() app = create_button(root) root.mainloop()
程式跑起來後出現一個“打招呼”按鈕,單擊它就能從IDLE接收到回饋資訊,如圖所示