"""
1、其實我們已經接觸過 tkinter 的一種布局,就是 pack 布 局,它非常簡單,我們不用做過多的設置,直接使用一個 pack 函數就可以了。
2、grid 布局:grid 可以理解為網格,或者表格,它可以把 界面設置為幾行幾列的網格,我們在網格里插入我們想要 的元素。
這種布局的好處是不管我們如何拖動窗口,相對 位置是不會變化的,而且這種布局也超簡單。
3、place 布局:它直接使用死板的位置坐標來布局,這樣做 的最大的問題在於當我們向窗口添加一個新部件的時候, 又得重新測一遍數據,
且我們不能隨便地變大或者縮小窗口,否則,可能會導致混亂。
"""
# pack布局
"""
1、pack函數布局的時候,默認先使用的放到上面,然后依次向下排列,默認方式它會給我們的組件一個自認為合適的位置和大小。
2、pack函數也可以接受幾個參數,side參數,指定了它停靠在哪個方向,可以為LEFT,TOP,RIGHT,BOTTOM,分別代表左,上,右,下,
它的fill參數可以是X,Y,BOTH,NONE即在水平方向填充,豎直方向填充,水平和豎直方向填充和不填充。
3、它的expand參數可以是YES 和 NO,它的anchor參數可以是N,E,S,W(這里的NESW分別表示北東南西,這里分別表示上右下左)以及他們的組合或者是CENTER(表示中間)
4、它的ipadx表示的是內邊距的x方向,它的ipady表示的是內邊距的y的方向,padx表示的是外邊距的x方向,pady表示的是外邊距的y方向。
"""
from tkinter import *
root = Tk()
Button(root,text= "A").pack(side = LEFT, expand = YES, fill = Y)
Button(root,text= "B").pack(side = TOP, expand = YES, fill = BOTH)
Button(root,text= "C").pack(side = RIGHT, expand = YES, fill = NONE,anchor = NE)
Button(root,text= "D").pack(side = LEFT, expand = NO, fill = Y)
Button(root,text= "E").pack(side = TOP, expand = NO, fill = BOTH)
Button(root,text= "F").pack(side = BOTTOM, expand = YES)
Button(root,text= "G").pack(anchor= SE)
root.mainloop()
運行結果如下:
# grid布局
"""
1、使用grid布局的時候,我們使用grid函數,在里面指定兩個參數,用row表示行,用column表示列,其中值得注意的是row和column的編號都從0開始。
2、grid函數還有個sticky參數,它可以用N,E,S,W表示上右下左,它決定了這個組件是從哪個方向開始的。
3、grid布局直接用后面的行和列的數字來指定了它位於哪個位置,而不必使用其他參數。
5、grid函數也支持諸如ipadx,ipady,padx,pady,他們的意思和pack函數一樣,默認邊距是0。
6、它還支持參數比如rowspan,表示跨越的行數,columnspan表示跨越的列數。
7、它還有一些屬性,可以在以后慢慢使用。
"""
from tkinter import *
root = Tk()
Label(root,text = "賬號:").grid(row = 0, sticky = W)
# Entry 表示“輸入框”
Entry(root).grid(row = 0, column = 1, sticky = E)
Label(root,text = "密碼:").grid(row = 1, sticky = W)
Entry(root).grid(row = 1, column = 1, sticky = E)
Button(root,text = "登錄").grid(row = 2, column = 1, sticky = E)
root.mainloop()
運行結果如下:
# place布局
"""
1、它使用place函數,它分為絕對布局和相對布局,絕對布局使用x和y參數,相對布局使用relx,rely,relheight和relwidth參數。
2、該方法不推薦大家使用。
"""