place
pack、grid 和 place 均用于管理同在一个父组件下的所有组件的布局,其中:
- pack 是按添加顺序排列组件
- grid 是按行/列形式排列组件
- 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() 一样
place_forget()
-- 将组件从屏幕中“删除”
-- 并没有销毁该组件,只是看不到了
-- 可以通过 place 或其他布局管理器显示已“删除”的组件
place_info()
-- 以字典的形式返回当前 place 的选项
place_slaves()
-- 以列表的形式返回该组件的所有子组件
-- 该方法仅适用于父组件
slaves()
-- 跟 place_slaves() 一样
文章最后发布于: 2019-01-02 10:08:16
相关阅读
HTML5 history.pushState()和history.replaceState()
1、使用pushState()方法 可以控制浏览器自带的返回按钮:有时候我们想让用户点击浏览器返回按钮时,不返回,或执行其他操作,这时,就用到
location.href和location.replace的区别
情景 比如支付过程中或者使用商品的优惠券,而使用这张优惠券需要取请求 一个第三方的地址,中间会有一次跳转。若使用 window.locati
Javascript history对象的 history.pushState() 和 hi
history.pushState() 和 history.replaceState() 是history对象的两个新增的方法,是可以很好的操作历史记录的方法;history.State()
location.reload() 和 location.replace()的区别和应
首先介绍两个方法的语法:reload 方法,该方法强迫浏览器刷新当前页面。语法: location.reload([bForceGet])
TensorFlow是一种符号式编程,它里面有各种计算流图和变量,今天来介绍一种占位符,它的好处是可以避免生成大量常量来提供输入数据,提高