必威体育Betway必威体育官网
当前位置:首页 > IT技术

Tkinter 布局管理器(三):place

时间:2019-10-31 13:13:21来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

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_configure(**options)

-- 跟 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])          

深度学习手记(二)之占位符Placeholder

TensorFlow是一种符号式编程,它里面有各种计算流图和变量,今天来介绍一种占位符,它的好处是可以避免生成大量常量来提供输入数据,提高

分享到:

栏目导航

推荐阅读

热门阅读