前言
它的底層是Tcl/Tk,先用起來再說,另外Python畢竟是面向對象語言,所以全文會使用到class和對象,盡量日后能滿足開發項目的需求。
(備注:Tcl/Tk 是一種簡明,高效,可移植性好的編程語言。在信息產業領域具有廣泛的應用。)
Hello World
從Hello World寫起,涉及到一個簡單的文本控件Label,當然控件需要顯示的容器,此處我們將其顯示在一個Window上,也會使用一種布局方式pack()
import tkinter as tk
class RootWindow(tk.Tk):
def __init__(self, **kwargs):
super().__init__(**kwargs)
label = tk.Label(self, text="Hello World", padx=10, pady=10) # 默認容器為window
label.pack() # 默認side=tk.TOP
if __name__ == "__main__":
my_window = RootWindow()
my_window.mainloop()
1、首先導入tkinter模塊(一個python包模塊對象),然后使用別名tk,這是為了少寫幾個字符而已,你也可以不使用別名功能
2、創建RootWindow類,此類必須繼承tkinter模塊下的Tk類,Tk類產生的對象,表示GUI中的一個Window
3、主模塊作為腳本執行時,創建RootWindow對象(Tk類的子類對象,表示is a Tk對象),接著調用Tk對象的mainloop()方法,讓主線程一直在事件循環中,確保程序不退出,此時的GUI應用才會一直運行
Window的實際效果

Hello World的文本位于一個叫做Label的控件中,Label控件類位于tkinter包中,它是Widget的子類,產生的每個對象表示一個文本控件,在創建Label對象時,必須傳入一個容器對象,表示這個控件依附在哪個容器中,幾乎所有前端技術都會涉及到的技術點,就是控件樹的概念(頁面都是樹形結構)
另外調用了Label的pack()方法的使用,這個pack()方法表示布局方式,也稱作布局管理器,它只能水平或者垂直的擺放控件,類似于Android中的LinearLayout,現在使用tkinter肯定會嵌套使用布局方式,這樣才能做出復雜的GUI應用!
窗口
tkinter中根Window使用tkinter包模塊下的Tk對象,而子Window,則可以使用tkinter包模塊下的Toplevel
控件
自帶了很多控件類,它們幾乎都是Widget的子類,使用時,只需要創建控件對象即可,后面我們會詳細介紹每一種控件,這里簡單提及Label、Button、ListBox、Radiobutton等等
容器
如果需要將多個控件組合在一起作為一個整體,那么tkinter包模塊下的Frame就可以作為它們的容器,在實際項目中,我們會大量的使用Frame去組合控件,其實Frame也算做控件,只不過它的作用是包含其他控件而已。(備注:LabelFrame也是容器類,用于包含控件)
布局方式
除了Hello World中提及的pack()方式、還有常用的grid()、place(),它們也被稱作布局管理器,專門管理控件如何擺放的,日后我們的代碼里會經常用到布局方式,還有Panedwindows的使用
雙向綁定的數據對象
它們全部是作為位于tkinter包模塊下的Variable類的子類而存在,包括IntVar、StringVar、BooleanVar、還有一個單獨的Var,它們可以和某個控件綁定在一起,實現雙向綁定:當改變控件的值、對應的Var值會改變;當改變Var值,控件上的顯示也會跟著改變
事件綁定類型
控件可以綁定一些事件,這些事件類型包括一些常見的交互行為,只要事件發生,為控件綁定的可調用對象,即會被調用,常見的事件有:
KeyPress 鍵盤的按鍵被按下時激活KeyRelease 鍵盤的按鍵按下后松開時激活Button 點擊鼠標時激活ButtonRelease 點擊鼠標后松開時激活Motion 鼠標的光標在控件上移動時激活Enter 鼠標光標進入控件時激活Leave 鼠標光標離開控件時激活MouseWheel 鼠標滑輪滾動時激活FocusIn 控件獲得焦點時激活,例如鼠標點擊輸入控件開始進行輸出FocusOut 控件失去焦點時激活,例如鼠標離開了輸入框Configure 控件的配置發生改變,例如大小變化時激活
提示對話框
GUI應用中,對話框用于提示人類錯誤,或者詢問一些基本信息,tkinter框架中自帶了幾個對話框供你使用,它們位于tkinter包中的messagebox模塊中


文件對話框
選擇本地文件路徑的對話框,位于tkinter包中的filedialog模塊中,即有選擇目錄的,也有選擇文件的,后面我們每個都使用一下

圖片
使用PhotoImage對象,只要指定了圖片文件的路徑,即可在應用上顯示圖片,默認指定文件名時,只會在當前工作目錄下查找圖片
畫板
Canvas的支持,可以使用通過代碼繪制一些簡單的圖形,另外也可以和matplotlib數據可視化庫結合起來使用
ttk模塊
大佬注意到tkinter模塊的使用中,有一些基本需求,控件功能上滿足的不夠好,所以又提供了一個ttk模塊,在ttk模塊中提供了很多控件類,這些類有新的默認樣式,當然是可以替代原先tkinter下控件類,下面有很多控件

持久化
我們還有一些需要在程序結束后,仍然保留在磁盤里的方式,這就是數據持久化,可以使用標準庫中的所有方式,如果是簡單的應用配置信息,使用configparser模塊即可滿足需求……
單元測試
位于tkinter包模塊下,有個test包,非常值得學習,大佬是怎么做單元測試的?

設計
做GUI應用,還是需要提前設計原型的,那么采用什么工具設計原型圖比較好呢?隨便你采用什么方式畫出來即可
做出多復雜的應用?
無非開發成本高一些,只要有心,我相信使用tkinter照樣可以做出像樣的GUI應用!
以上就是實現Python圖形界面框架TkInter寫GUI應用簡介過程操作的詳細內容,更多關于Python圖形界面框架TkInter的資料請關注腳本之家其它相關文章!
您可能感興趣的文章:- Python GUI編程學習筆記之tkinter界面布局顯示詳解
- python3使用tkinter實現ui界面簡單實例
- 使用Python中tkinter庫簡單gui界面制作及打包成exe的操作方法(二)
- Python中使用Tkinter模塊創建GUI程序實例
- python3.6 +tkinter GUI編程 實現界面化的文本處理工具(推薦)