python控件位置place_Python-Tkinter 组件之Place

Place

通常情况下不建议使用 place 布局管理器,因为对比起 pack 和 grid,place 要做更多的工作。不过纯在即合理,place 在一些特殊的情况下可以发挥妙用。请看下边例子。

代码

import tkinter as tk

root = tk.Tk()

def callback():

print("正中靶心")

tk.Button(root, text="点我", command=callback).place(relx=0.5, rely=0.5, anchor="center")

root.mainloop()

在某种情况下,或许你希望一个组件可以覆盖另一个组件,那么 place 又可以派上用场了。下边例子我们演示用 Button 覆盖 Label 组件:

import tkinter as tk

root = tk.Tk()

photo = tk.PhotoImage(file = "Python.gif")

tk.Label(root, image = photo).pack()

def callback():

print("正中靶心")

tk.Button(root, text="点我", command=callback).place(relx=0.5, rely=0.5, anchor="center")

root.mainloop()

应该不难看出,relx 和 rely 选项指定的是相对于父组件的位置,范围是 00 ~ 1.0,因此 0.5 表示位于正中间。那么 relwidth 和 relheight 选项则是指定相对于父组件的尺寸:

import tkinter as tk

root = tk.Tk()

tk.Label(root, bg="red").place(relx=0.5, rely=0.5, relheight=0.75, relwidth=0.75, anchor="center")

tk.Label(root, bg="yellow").place(relx=0.5, rely=0.5, relheight=0.5, relwidth=0.5, anchor="center")

tk.Label(root, bg="green").place(relx=0.5, rely=0.5, relheight=0.25, relwidth=0.25, anchor="center")

root.mainloop()

无论你如何拉伸改变窗口,三个 Label 的尺寸均会跟着改变(神同步~)。x 和 y 选项用于设置偏移(像素),如果同时设置 relx(rely)和 x(y),那 place 将优先计算 relx 和 rely,然后再实现 x 和 y 指定的偏移值。

方法

注:下边所有方法适用于所有组件

place(**options)

-- 下方表格详细列举了各个选项的具体含义和用法:

选项

含义

anchor

1. 控制组件在 place 分配的空间中的位置

2. "n", "ne", "e", "se", "s", "sw", "w", "nw", 或 "center" 来定位(ewsn代表东西南北,上北下南左西右东)

3. 默认值是 "nw"

bordermode

1. 指定边框模式("inside" 或 "outside")

2. 默认值是 "inside"

height

指定该组件的高度(像素)

in_

1. 将该组件放到该选项指定的组件中

2. 指定的组件必须是该组件的父组件

relheight

1. 指定该组件相对于父组件的高度

2. 取值范围 0.0 ~ 1.0

relwidth

1. 指定该组件相对于父组件的宽度

2. 取值范围 0.0 ~ 1.0

relx

1. 指定该组件相对于父组件的水平位置

2. 取值范围 0.0 ~ 1.0

rely

1. 指定该组件相对于父组件的垂直位置

2. 取值范围 0.0 ~ 1.0

width

指定该组件的宽度(像素)

x

1. 指定该组件的水平偏移位置(像素)

2. 如同时指定了 relx 选项,优先实现 relx 选项

y

1. 指定该组件的垂直偏移位置(像素)

2. 如同时指定了 rely 选项,优先实现 rely 选项

place_configure(**options)

-- 跟 place() 一样

place_forget()

-- 将组件从屏幕中“删除”

-- 并没有销毁该组件,只是看不到了

-- 可以通过 place 或其他布局管理器显示已“删除”的组件

place_info()

-- 以字典的形式返回当前 place 的选项

place_slaves()

-- 以列表的形式返回该组件的所有子组件

-- 该方法仅适用于父组件

slaves()

-- 跟 place_slaves() 一样

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值