在使用Tkinter模塊編寫圖像界面時,經常用到pack()和grid()進行布局管理,pack()參數較少,使用方便,是最簡單的布局,但是當控件數量較多時,可能需要使用grid()進行布局(不要在同一個窗口中同時使用grid()和pack()!!)。
grid使用方法和主要參數:
- row=x,column=y:將控件放在x行,y列的位置。注意:
- 如果不指定參數,則默認從0開始。
- 此處的行號和列號並不是像在坐標軸上一樣嚴格,只是代表一個上下左右的關系,如:
Label(master, text="First").grid(row=0)
Label(master, text="Second").grid(row=1)
和(在行號“1”沒有出現的情況下):
Label(master, text="First").grid(row=0)
Label(master, text="Second").grid(row=2)
效果都是一樣的:
2.columnspan: 設置單元格橫向跨越的列數,即控件占據的列數(寬度); rowspan:設置單元格縱向跨越的行數,即控件占據的行數(高度)。
3.ipadx:設置控件里面水平方向空白區域大小; ipady:設置控件里面垂直方向空白區域大小;
padx:設置控件周圍水平方向空白區域保留大小; pady:設置控件周圍垂直方向空白區域保留大小;
4.sticky:默認的控件在窗口中的對齊方式是居中。可以使用sticky選項去指定對齊方式,可以選擇的值有:N/S/E/W,分別代表上對齊/下對齊/左對齊/右對齊,可以單獨使用N/S/E/W,也可以上下和左右組合使用,達到不同的對齊效果,如:

from tkinter import * master = Tk() master.geometry('300x130') e1 = Button(master,text='First',height=2,width=7,fg='red') e2 = Button(master,text='Second',height=3,width=13,fg='blue') e1.grid(row=0, column=0) e2.grid(row=0, column=1) mainloop()
窗口內有兩個按鈕,寬度高度均不相同,可以看到它們的對齊方式是居中顯示:
如果想讓它們在同一行上下對齊,可以設置sticky=N+S,意為頂端和低端都要對齊:

from tkinter import * master = Tk() master.geometry('300x130') e1 = Button(master,text='First',height=2,width=7,fg='red') e2 = Button(master,text='Second',height=3,width=13,fg='blue') e1.grid(row=0, column=0,sticky=N+S) e2.grid(row=0, column=1,sticky=N+S) mainloop()
總結如下:
sticky=N/S/E//W:頂端對齊/底端對齊/右對齊/左對齊
sticky=N+S:拉伸高度,使其在水平方向上頂端和底端都對齊
sticky=E+W,拉伸寬度,使其在垂直方向上左邊界和右邊界都對齊
sticky=N+S+E:拉伸高度,使其在水平方向上對齊,並將控件放在右邊(當兩個控件放在同一行同一列時效果明顯)
.......
還有諸如此類的組合方式根據需要調整。
在Tkinter模塊中,各種控件的大小計量單位並不盡相同,可能需要反復調整才能達到最佳效果。
注:以上程序代碼適用於python3.4.3版本,python2.x可能需要稍作改變。