Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 区别于;填写「;及;扩大;tkinter-pack方法的选项_Python_Tkinter - Fatal编程技术网

Python 区别于;填写「;及;扩大;tkinter-pack方法的选项

Python 区别于;填写「;及;扩大;tkinter-pack方法的选项,python,tkinter,Python,Tkinter,我知道这是一个太琐碎的问题,但我对python还是新手,我刚刚开始使用tkinter模块。事实上,我到处都查过,但我找不到满意的答案。我发现: fill选项:它决定是使用更多空间还是保留更多空间 “自己的”维度 expand选项:它处理父窗口小部件的扩展 问题在于这两种声音或多或少是相同的。我甚至尝试了几个例子,通过在fill的4个值和expand的2个值之间切换,但在2或3种情况下收到了大致相同的输出,因此我有了这个查询。在这方面如有任何帮助,将不胜感激。提前谢谢 来自: fill选项告诉管理

我知道这是一个太琐碎的问题,但我对python还是新手,我刚刚开始使用
tkinter
模块。事实上,我到处都查过,但我找不到满意的答案。我发现:

fill
选项:它决定是使用更多空间还是保留更多空间 “自己的”维度

expand
选项:它处理父窗口小部件的扩展

问题在于这两种声音或多或少是相同的。我甚至尝试了几个例子,通过在
fill
的4个值和
expand
的2个值之间切换,但在2或3种情况下收到了大致相同的输出,因此我有了这个查询。在这方面如有任何帮助,将不胜感激。提前谢谢

来自:

fill选项告诉管理员小部件希望填充分配给它的整个空间。该值控制如何填充空间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的标签。这两个
都向两个方向扩展,但可用空间较少


我已经完成了反复试验。以下是概述:


哦,对不起,从你描述它的方式来看,我认为它来自其他地方。为了对这两个选项有更多的了解,您可以稍微玩转一下示例中的选项,从label1中删除
展开
,将
展开
设置为1,然后尝试
填充=tk.X
。。。背景色确实显示了小部件使用的主部件的哪一部分(在本例中是根部件)。我假设python默认情况下会将整个水平空间分配给一个小部件。因此,即使
expand=0
fill=X
小部件也会填满整个水平屏幕空间。但是,如果写入了
expand=0
fill=Y
,则小部件大小保持不变。正确吗?是的,对于包含
side=TOP
(默认)和
BOTTOM
的小部件来说,这是正确的。对于
side=LEFT
RIGHT
,小部件将自动在
Y
方向展开。您可以通过设置两者的
fill=BOTH
和其中一个的
side=LEFT
来查看。太棒了!尝试了
side=LEFT
&
side=RIGHT
,得到了您提到的结果。当然,这消除了关于
填充
扩展
选项的所有疑问。再次感谢!这是一个很好的视觉指南!虽然我并不完全同意
expand=True否决了side=''.''.'
。当您只有一个小部件时(如示例中所示),情况可能是这样,但当您有多个小部件时,情况肯定不是这样。我改了。
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()