來源:https://blog.csdn.net/zhang07083/article/details/103381397
Tkinter的pack()方法記錄
我理解的pack方法就是需要將容器如何放置在你的窗口上面,主要是相對位置的一個概念,而且最重要的是pack方法是按照代碼執(zhí)行順序一行一行放置的,先后順序?qū)Y(jié)果有很大影響。
首先pack()方法的屬性有如下幾個:
-after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, -side
其中pack方法可以應(yīng)用于Tkinter內(nèi)的所有容器;
expand
expand參數(shù)表示的是容器在整個窗口上,將容器放置在剩余空閑位置上的中央(包括水平和垂直方向)
expand=1或者expand=“yes”,表示放置在中央
expand=0或者expand=“no”,表示默認(rèn)不擴展
#"作者:曬曬小木樁"
import tkinter as tk
window = tk.Tk()
window.geometry("150x150")
tk.Button(window, text="Button-1", bg="green").pack(expand="yes")
tk.Button(window,text="Button-2",bg="yellow").pack(expand="no")
#tk.Button(window,text="Button-3",bg="yellow").pack()
window.mainloop()
效果圖如下:
可以明顯的對比出expand不是整個窗口的中心,而是剩余位置的中心;
fill 和 side
fill表示的是容器相對于整個窗口是否進(jìn)行填充,這個參數(shù)的優(yōu)先級高于width和heigh;有三個選項可以配置,
fill=“x”,表示橫向填充
fill=“y”,表示縱向填充
fill=“both”,表示橫向和縱向都填充
上面幾個填充選項當(dāng)和side同時使用時需要注意:
當(dāng)side="left"或side="right"時,fill="x"不起作用,只能填充y
side=“top”,side="bottom"時,fill="y"不起作用,只能填充x
#"作者:曬曬小木樁"
import tkinter as tk
window = tk.Tk()
window.geometry("150x150")
tk.Label(window, text="上邊", bg="green").pack(fill="x", side="top")
tk.Label(window, text="下邊", bg="red").pack(fill="y", side="bottom")
tk.Label(window, text="左邊", bg="green").pack(fill="y", side="left")
tk.Label(window, text="右邊", bg="red").pack(fill="x", side="right")
tk.Button(window, text="中間", bg="yellow").pack(expand="yes")
window.mainloop()
效果如下:

如果多個容器使用同一個side,那么將會按照如下箭頭方向進(jìn)行排列:
#"作者:曬曬小木樁"
import tkinter as tk
window = tk.Tk()
window.geometry("250x250")
tk.Label(window,text="1",bg="green").pack(side="left")
tk.Label(window,text="2",bg="green").pack(side="left")
tk.Label(window,text="3",bg="red").pack(side="right")
tk.Label(window,text="4",bg="red").pack(side="right")
tk.Label(window,text="5",bg="yellow").pack(side="top")
tk.Label(window,text="6",bg="yellow").pack(side="top")
tk.Label(window,text="7",bg="pink").pack(side="bottom")
tk.Label(window,text="8",bg="pink").pack(side="bottom")
window.mainloop()
padx,pady和ipadx,ipady
1.簡單來說就是padx和pady表示的是2個容器,或者是容器和邊框之間需要的間距(x是上和下對稱,y是左和右對稱)
2.ipadx和ipady表示容器的內(nèi)容和容器邊框之間的距離,同樣是對稱的;
下面2個列子說明;
ipadx和ipady:
#"作者:曬曬小木樁"
import tkinter as tk
window = tk.Tk()
window.geometry("200x200")
tk.Button(window,text="Button-1").pack()
tk.Button(window,text="Button-2").pack(ipadx=10,ipady=10)
window.mainloop()

padx和pady:
#"作者:曬曬小木樁"
import tkinter as tk
window = tk.Tk()
tk.Button(window,text="Button-1").pack()
tk.Button(window,text="Button-2").pack(padx=50,pady=10)
window.mainloop()

anchor
首先anchor共有9個參數(shù)可以設(shè)置n, s, w, e ,nw, ne, sw, se, center. 分別是各個方向英語的縮寫。
有一個注意點是,anchor 放置容器時是相對于每一行放置的,重點在控制每一個容器在每一行的位置比較有用。如果要想實現(xiàn)相對于整個窗口的相對位置放置,可以參考上面的side用法。
#"作者:曬曬小木樁"
import tkinter as tk
window = tk.Tk()
window.geometry("300x300")
tk.Button(window,text="1-North West").pack(anchor="nw")
tk.Button(window,text="2-North").pack(anchor="n")
tk.Button(window,text="3-North East").pack(anchor="ne")
tk.Button(window,text="4-West").pack(anchor="w")
tk.Button(window,text="5-East").pack(anchor="e")
tk.Button(window,text="6-South West").pack(anchor="sw")
tk.Button(window,text="7-South").pack(anchor="s")
tk.Button(window,text="8-South East").pack(anchor="se")
tk.Button(window,text="9-Center").pack(anchor="center")
window.mainloop()
運行結(jié)果
after,before,in這3個基本不用
最后推薦一個看到別人總結(jié)的很好的文章,連接如下:
tkinter模塊常用方法和其屬性