Python Tkinter place绝对布局

介绍

place布局适用于更加复杂的,需要 准确摆放 组件的容器。

这种布局不是很常用,因为使用 比较麻烦,也最简单,需要提供 x、y坐 标以及组件的 width 和 height(以像素为单位)

tkinter坐标系

左上角为(0, 0)

place布局参数

x 和 y

组件在x轴和y轴上的位置,单位为像素。

relx 和 rely

组件 相对于 容器的位置,是一个 0-1 之间的浮点数,表示组件位于整个容器的位置。

比如:组件的 x 设在容器 30% 的位置,就设为 relx=0.3

如果想要把 组件居中,就设置 relx=0.5, rely=0.5, anchor="center"

x、y 和 relx、rely

由于都是设置位置,所以:要么使用 x、y,要么使用 relx、rely,不同时使用

width 和 height

指定组件的宽和高。

relwidth 和 relheight

指定组件 相对于 容器的宽与高,即:控件大小会随着窗口大小改变而改变

是一个 0-1 之间的浮点数

如:组件宽是容器宽的 50%,则设置为 relwidth=0.5

width、height 和 relwidth、relheight

由于都是设置 宽和高,所以:要么使用 width、height,要么使用 relwidth、relheight,不同时使用

anchor

组件的锚选项,可选有八个方位,以及 center。意思是:将组件 anchor 位置的坐标设置为 x,y。

如:anchor="nw" 的时候,如果 x=100, y=100,那么组件的 左上角 的位置就是 100, 100。

下面是几个例子:

例子1 - x、y 和 width、height

import tkinter as tk

# 创建窗口
win = tk.Tk()
# 窗口标题
win.title("测试")
# 600宽、400高
win.geometry("600x400")


label1 = tk.Label(win, text="华为",bg="red")
label2 = tk.Label(win, text="iphone",bg="green")
label3 = tk.Label(win, text="小米",bg="blue")

'''
绝对布局,窗口大小的变化对布局没有影响
'''
label1.place(x=10, y=10,width=100,height=30) 
label2.place(x=50, y=50,width=200,height=50)
label3.place(x=100, y=100,width=300,height=70)

win.mainloop()

例子2 - relx、rely 和 relwidth、relheight

import tkinter as tk

# 创建窗口
win = tk.Tk()
# 窗口标题
win.title("测试")
# 600宽、400高
win.geometry("600x400")


label1 = tk.Label(win, text="华为",bg="red")
label2 = tk.Label(win, text="iphone",bg="green")
label3 = tk.Label(win, text="小米",bg="blue")

'''
绝对布局,控件大小会随着窗口大小改变而改变
'''
label1.place(relx=0.1, rely=0.1,relwidth=0.1,relheight=0.1) 
label2.place(relx=0.2, rely=0.3,relwidth=0.2,relheight=0.2)
label3.place(relx=0.5, rely=0.5,relwidth=0.3,relheight=0.3)

win.mainloop()

参考:
https://blog.csdn.net/qq_48979387/article/details/125706562


原文出处:/show_1IX65IHJbQvf.html