所谓布局,就是指控制窗体容器中各个控件(组件)的位置关系。tkinter 共有三种几何布局管理器,分别是:place布局、pack布局、grid布局。

目录

环境:

1.place 绝对布局

2.pack 相对布局

3.grid 表格布局

环境:

window 10

python 3.7

1.place 绝对布局

place():将控件放置在父控件内的特定位置

  x:定义控件的绝对水平位置,默认值是0

  y:定义控件的绝对垂直位置,默认值是0

import tkinter as tk

root = tk.Tk()

# 位置在距离窗体左上角的(10,15)坐标处
label1 = tk.Label(bg='red', text='我是label1')
label1.place(x=10, y=15)

# 位置在距离窗体左上角的(30,45)坐标处
label2 = tk.Label(bg='blue', text='我是label2')
label2.place(x=30, y=45)

# 位置在距离窗体左上角的(50,75)坐标处
label3 = tk.Label(bg='yellow', text='我是label3')
label3.place(x=50, y=75)

# 进入程序循环
root.mainloop()

anchor控件提供什么功能 python python控件位置_ide

固定坐标,按绝对布局显示,窗口大小的变化对布局没有影响

anchor控件提供什么功能 python python控件位置_ide_02

2.pack 相对布局

pack():将控件放置在父控件内之前,规划此控件在区块内的位置

fill:决定控件如何填满 parcel 的空间,可以是 X、Y、BOTH 或 NONE,此选项必须在 expand 等于 1 才有作用。

当 fill 等于 X 时,窗体会占满整个窗口 X 方向剩余的空间;当 fill 等于 Y 时,窗体会占满整个窗口 Y 方向剩余的空间;

当 fill 等于 BOTH 时,窗体会占满整个窗口剩余的空间;当 fill 等于 NONE 时,窗体维持不变。

side:定义控件放置的位置,可以是 TOP(靠上对齐)、BOTTOM(靠下对齐)、LEFT(靠左对齐)、RIGHT(靠右对齐)。

import tkinter as tk

root = tk.Tk()

# 位置在平行方向的上方
label1 = tk.Label(bg='red', text='我是label1')
label1.pack(fill=tk.X, side=tk.TOP)

# 位置在平行方向的下方
label2 = tk.Label(bg='blue', text='我是label2')
label2.pack(fill=tk.X, side=tk.BOTTOM)

# 位置在垂直方向的左侧
label3 = tk.Label(bg='yellow', text='我是label3')
label3.pack(fill=tk.Y, side=tk.LEFT)

# 位置在垂直方向的右侧
label3 = tk.Label(bg='green', text='我是label4')
label3.pack(fill=tk.Y, side=tk.RIGHT)

# 进入程序循环
root.mainloop()

 

anchor控件提供什么功能 python python控件位置_ide_03

相对布局,窗体改变对空间有影响

anchor控件提供什么功能 python python控件位置_tkinter布局_04

3.grid 表格布局

grid() 方法将控件依照表格的行列方式,来放置在窗体或窗口内。

row:设置控件在表格中的第几列。

column:设置控件在表格中的第几栏。 

import tkinter as tk

root = tk.Tk()

text = []
# 将文本描述放入一个列表中
for i in range(1, 10):
    text.append('我是button-%d' % i)
# 创建9个button 为显示效果使用button控件
for i in range(3):
    for j in range(3):
        # 创建9个Button控件 将窗体编排成3X3的表格
        tk.Button(root, text=text[j+i*3]).grid(row=i, column=j)

# 进入程序循环
root.mainloop()

anchor控件提供什么功能 python python控件位置_相对布局_05