我知道这是一个太微不足道的问题,但我是python的新手,我刚刚开始使用该tkinter
模块.我到处都看到了它,我无法找到满意的答案.我找到了以下内容:
fill
选项:它确定是否占用更多空间或保留"自己的"维度.
expand
选项:它处理父窗口小部件的扩展.
该问题是,这两个听起来或多或少相同.我甚至尝试了一些例子,通过在4个值fill
和2个值之间切换expand
但在2或3个案例中接收或多或少相同的输出,因为我有这个查询.在这方面,任何帮助将不胜感激.提前致谢!
Ron*_*ald 40
我已经完成了反复试验。这是一个概述:
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()
Run Code Online (Sandbox Code Playgroud)
fhd*_*sdg 30
来自effbot:
该填充选项告诉小部件要填写分配给它的整个空间的经理.该值控制着如何填充空间; 两个意味着小部件应该在水平和垂直方向上扩展,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()
Run Code Online (Sandbox Code Playgroud)
您可以看到标签带有expand=1
尽可能多的空间,但只能按指定的方向占用Y.标签fill=tk.BOTH
在两个方向上都展开,但可用空间较小.
小智 17
我也是一个努力理解这些选项如何协同工作的人。
值得庆幸的是,在Ronald的直观解释下,终于有了清晰的认识。
所以我编写了一些程序来模拟 pack 的工作原理。
https://github.com/thom-jp/tkinter_pack_simulator
这是运行程序的图像:
归档时间: |
|
查看次数: |
42599 次 |
最近记录: |