place布局管理器是Tkinter支持的第三种布局管理器,它允许程序员直接指定控件的位置和大小。例如下面的代码:
from tkinter import *
root = Tk()
# 绝对位置
Button(root,text="绝对坐标摆放1").place(x=20, y=10, width=150, height=50)
Button(root, text="绝对坐标摆放2").place(x=20, y = 80, width=150, height=50)
root.mainloop()
通过指定两个按钮的绝对坐标,宽度和高度生成以下的画面:
读者尝试拖动窗口的有边界和下边界可以知道,无论如何调整窗口的大小,两个按钮的大小和位置都不会发生改变:
也可以按照相对坐标摆放控件的位置,例如下面的代码:
from tkinter import *
root = Tk()
Button(root,text="相对坐标摆放1").place(relx=0.2, rely=0.2, relwidth=0.6, relheight=0.2)
Button(root,text="相对坐标摆放2").place(relx=0.2, rely=0.6, relwidth=0.6, relheight=0.2)
root.mainloop()
和使用绝对坐标时的区别就在于在每个属性的前面都加一个rel前缀。数值的含义是窗口宽或高的相对值。例如relx=0.2从含义按钮的开始位置时窗口宽度20%的位置,以此类推。这段代码的执行之后生成如下的画面:
如果读者拖动窗口的边界扩大窗口的大小,空间的尺寸和位置也会随之发生变化,但是在水平和垂直两个方向上位置比例不变。
place布局管理器虽然看起来简单,但是但控件的数量多了以后,坐标的计算和维护都会变得很复杂。正是由于这个原因,几乎没有Tkinter应用会使用这种布局管理器。
但是由用户这种方式对于控件位置和尺寸的安全控制,如果我们希望自已定义一种布局方式,这种方式可以作为基础。
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】