tkinter打包方法中 "填充 "和 "展开 "选项的区别。

问题描述 投票:29回答:1

我知道这是个太琐碎的问题,但我是个新手,刚刚开始使用 tkinter 模块。其实我到处查了一下,都找不到满意的答案。我找到了以下内容。

fill 选项:它决定了是占用更多的空间还是保持 "自己 "的尺寸。

expand 选项:它处理的是父部件的扩展。

问题 是这两个声音或多或少 一样. 我甚至尝试了几个例子,在4个值之间切换。fill 和2个值 expand 但在2、3个案例中收到了或多或少相同的输出,因此我有这个疑问。任何帮助将被感激在这方面。先谢谢你

python tkinter
1个回答
34
投票

来自 疗效宝:

负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 负责人: 填充 选项告诉管理员,小组件要填满分配给它的整个空间。该值控制如何填充空间。BOTH 意味着小组件应在水平和垂直方向上展开。X 意味着它只能水平展开,而 Y 意味着它应该只在垂直方向扩张。

扩大 选项告诉管理员为小组件框分配额外空间。如果父小组件的大小超过了容纳所有打包小组件所需的大小,则任何超出的空间将被分配给所有具有以下功能的小组件 扩大 选项设置为非零值。

所以 fill 告诉小组件在指定的方向上成长到有多少可用空间。expand 告诉主站将未分配给任何小组件的任何空间,并将其分配给所有具有非零的 expand 值。

在运行这个例子时,两者的区别就很明显了。

import Tkinter as tk

root = tk.Tk()
root.geometry('200x200+200+200')

tk.Label(root, text='Label', bg='green').pack(expand=1, fill=tk.Y)
tk.Label(root, text='Label2', bg='red').pack(fill=tk.BOTH)

root.mainloop()

你可以看到标签上的 expand=1 被分配了尽可能多的可用空间,但只在指定的方向上占用,Y.标签上有 fill=tk.BOTH 向两个方向扩展,但可用空间较小。

Expand vs Fill


3
投票

我已经试错了;-)。这里是一个概述。基本上是这样的。expand=True 否决 side='...'

fill and side combinations with expand = Falsefill and side combinations with expand = True

import tkinter as tk

root = tk.Tk()
root.geometry()

for e, expand in enumerate([False, True]):
    for f, fill in enumerate([None, tk.X, tk.Y, tk.BOTH]):
        for s, side in enumerate([tk.TOP, tk.LEFT, tk.BOTTOM, tk.RIGHT]):
            position = '+{}+{}'.format(s * 205 + 100 + e * 820, f * 235 + 100)
            win = tk.Toplevel(root)
            win.geometry('200x200'+position)
            text = str("side='{}'\nfill='{}'\nexpand={}".format(side, fill, str(expand)))
            tk.Label(win, text=text, bg=['#FF5555', '#55FF55'][e]).pack(side=side, fill=fill, expand=expand)

root.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.