1、pack布局:我们已经接触过tkinter的一种布局了,就是pack布局,它非常简单,我们不用做过多的设置,直接使用一个pack函数就可以了。
2、grid布局:grid布局可以理解为网格,或者表格,它可以把界面设置为几行几列的网格,我们在网格里插入我们想要的元素。这种布局的好处是不管我们如何拖动窗口,相对位置是不会变化的,而且这种布局也很简单。
3、place布局:它直接使用死板的位置坐标来布局,这样做的最大问题在于当我们向窗口添加一个新部件的时候,又得重新测量一遍数据,且我们不能随便地变大或者缩小窗口,否则可能会导致混乱。

pack 布局

1、我们使用pack函数的时候,默认先使用的放到上面,然后依次向下排,它会给我们的组件一个自认为合适的位置和大小,这是默认方式。
2、pack 函数也可以接受几个参数:

  • side参数指定了它停靠在哪个方向,可以为LEFT、TOP、RIGHT、BOTTOM,分别代表左、上、右、下。
  • fill参数可以是X、Y、BOTH和NONE,即在水平方向填充、竖直方向填充、水平和竖直方向填充、和不填充。
  • expand参数可以是YES和NO,他的anchor参数可以是N、E、S、W(这里的NESW分别表示北东南西,这里分别表示上左下右)以及他们的组合或者是CENTER(表示中间)。
  • ipadx,表示的是内边距的x方向,他的ipady表示的是内边距的y方向,padx表示的是外边距的x方向,pady表示的是外边距的y方向。

pack的布局实例

python tkinter 子窗口位置 tkinter窗口布局_grid

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 = CENTER)
Button(root,text = "D").pack(side = LEFT,expand = NO,fill = Y)
Button(root,text = "E").pack(side = TOP,expand = NO,fill = Y)
Button(root,text = "F").pack(side = BOTTOM,expand = YES)
Button(root,text = "G").pack(anchor = SE)

root.mainloop()

grid布局

1、由于我们的程序大多数都是矩形,因此特别适合网格布局,也就是grid布局。
2、使用grid布局的时候,我们使用grid函数,在里面指定两个参数,用row表示行,用column表示列,注意的是row和column的编号都是从0开始的。
3、grid函数还有个sticky参数,它可以用N、S、W、E表示上、下、左、右,它决定这个组件是从哪个方向开始的。
4、grid函数直接用后面的行和列的数字来指定了它位于哪个位置,而不必使用其他参数。
5、grid函数也支持诸如ipadx、ipady、padx、pady,他们的意思和pack函数是一样的,默认边距是0。
6、它还支持参数比如rowspan,表示跨越的行数,columnspan表示跨越的列数。

from tkinter import *

py = Tk()
Label(py,text = "账号:").grid(row = 0,sticky = W)
Entry(py).grid(row = 0,column = 1,sticky = E)
#Entry表示输入框

Label(py,text = "密码:").grid(row = 1,sticky = W)
Entry(py).grid(row = 1,column = 1,sticky = E)

Button(py,text = "登录").grid(row = 2,column = 1,sticky = E)

py.mainloop()

python tkinter 子窗口位置 tkinter窗口布局_pack_02

place布局

1、关于place布局,这个的几何管理器组织放置在一个特定的位置
2、它使用place函数,分为绝对布局和相对布局,绝对布局使用x和y参数,相对布局使用relx、rely、relheight、relwidth参数。
3、该方法用的极少,且不推荐大家使用。