tkinter是python自帶的gui庫,適合入門。創建窗口需導入tkinter模塊并實例化tk()對象,最后調用mainloop()啟動事件監聽。添加控件如按鈕、輸入框等,通過pack()/grid()/place()布局,注意不可混用布局方式。事件綁定可通過command參數或bind()方法實現。布局時易忽略混用不同布局導致控件不顯示,可用update_idletasks()配合屏幕尺寸計算讓窗口居中顯示。
學python做界面,Tkinter是最簡單的入門選擇。它是Python自帶的GUI庫,不需要額外安裝,寫一些小工具或者練手項目特別合適。
怎么創建一個窗口?
用Tkinter寫界面,第一步就是創建主窗口。這一步其實很簡單,只需要導入tkinter模塊,然后實例化一個Tk()對象就可以了。
import tkinter as tk window = tk.Tk() window.mainloop()
這段代碼運行之后就會彈出一個空白窗口。別看它簡單,但這是所有Tkinter程序的基礎。注意最后一定要調用mainloop(),否則窗口不會顯示。這就像給程序裝了個“事件監聽器”,讓窗口能響應用戶的操作。
立即學習“Python免費學習筆記(深入)”;
控件怎么加進去?
窗口有了,下一步就是往里面加按鈕、輸入框這些控件。Tkinter提供了很多基本控件,比如Label(標簽)、Button(按鈕)、Entry(輸入框)等等。
添加控件的步驟一般是:
- 創建控件對象
- 把它放到窗口里
- 設置布局方式(pack/grid/place)
舉個例子,加一個按鈕:
button = tk.Button(window, text="點我") button.pack()
這樣就在窗口中添加了一個按鈕,并且用了pack()自動排版。如果你要更精確地控制位置,可以用place(x=50, y=50)指定坐標,或者用grid(row=0, column=0)按行列布局。
不同布局方式不能混用,選一種就堅持到底。
事件綁定怎么做?
按鈕加好了,當然希望它有點反應。這時候就需要綁定事件。最常見的是點擊按鈕觸發某個函數。
def on_click(): print("你點了我") button = tk.Button(window, text="點我", command=on_click) button.pack()
這里的關鍵是command參數,它指定了點擊按鈕時要執行的函數。除了按鈕,其他控件也有類似機制,比如輸入框內容變化、選擇菜單項等。
有些事件需要綁定到特定動作上,比如鼠標移動、鍵盤按鍵,這時候要用bind()方法:
window.bind("<Key>", lambda event: print("你按了鍵"))
布局容易忽略什么?
很多人剛開始寫Tkinter程序時,會發現控件排得亂七八糟,或者看不見、重疊了。其實主要是布局沒搞清楚。
- pack()適合從上往下或從左往右排列控件
- grid()適合表格式布局,行和列清晰
- place()適合精確控制位置
一個常見的坑是:同一個父容器里混用不同的布局方式,結果控件顯示不出來。比如你給一個控件用了pack(),又給另一個控件用了grid(),那很可能只有第一個生效,第二個不顯示。
還有個小技巧:想讓窗口居中打開,可以自己算一下屏幕尺寸,設置窗口的位置:
window.update_idletasks() # 刷新界面信息 width = window.winfo_width() height = window.winfo_height() screen_width = window.winfo_screenwidth() screen_height = window.winfo_screenheight() x = (screen_width - width) // 2 y = (screen_height - height) // 2 window.geometry(f"+{x}+{y}")
這樣就不會一打開窗口就跑到屏幕角落去了。
基本上就這些。Tkinter雖然功能不算強大,但對新手友好,也不依賴外部庫,用來寫點小工具挺合適的。