python的pack方法_Tkinter-pack方法混乱

这篇博客介绍了Tkinter中封隔器(Pack)和网格(Grid)布局管理器的使用。封隔器适合垂直或水平堆叠组件,但当需要切换轴时,网格布局更为灵活。通过创建一个名为'CD'的帧,将C和D左右排列,实现了类似网格的效果。博客还解释了封隔器如何分配空间,并提供了代码示例来展示其工作原理。
摘要由CSDN通过智能技术生成

简言之,打包机并不是为了直接创建你要创建的布局而设计的。你可以做,但它需要一些额外的帧。在这个您显然要创建网格的特殊情况下,grid可以说是更好的选择。在

在我解释为什么会这样之前,让我提出一个解决方案。创建另一个名为“CD”的帧,它将用于同时保存C和{}。然后您可以将C打包到左边,D到右边,然后将这个框架放在B下面。这就是使用封隔器达到预期效果的方法。在A = tk.LabelFrame(root,text='A', bd=2)

B = tk.LabelFrame(root,text='B', bd=2)

CD = tk.Frame(root)

C = tk.LabelFrame(CD,text='C', bd=2)

D = tk.LabelFrame(CD,text='D', bd=2)

E = tk.LabelFrame(root,text='E', bd=2)

C.pack(side=tk.LEFT,fill=tk.BOTH, expand=tk.TRUE)

D.pack(side=tk.RIGHT,fill=tk.BOTH, expand=tk.TRUE)

A.pack(fill=tk.BOTH, expand=tk.TRUE)

B.pack(fill=tk.BOTH, expand=tk.TRUE)

CD.pack(fill=tk.BOTH, expand=tk.TRUE)

E.pack(side=tk.BOTTOM, fill=tk.BOTH, expand=tk.TRUE)

解释封隔器

封隔器的工作方式是沿着未分配的空间一侧保留一块空间。当包装顶部占满空间时,

让我试着用一些截图来描述它。在所有情况下,下面的屏幕截图并不显示帧,它们显示了打包机管理的已分配和未分配的空间量。在

当沿着顶部打包A(如果不指定边,则默认为top),则会为根窗口的整个宽度保留一块空间。因为您将其压缩到顶部,所以剩下的空间只有A以下。从此以后,A的左边或右边都不能打包。在

(实际上,您可以使用一些高级选项将内容向左或向右放置,但这超出了本文的描述范围)

当您沿着顶部打包B时,唯一可用的空间在A下方。同样,因为您是沿着顶部打包的,在打包B之后,现在唯一可用的可用空间将在B以下。在

当您沿着左边打包C时,将为剩余空间的整个高度保留一块空间。这意味着不能在C下面放置任何内容。所有剩余的空间都在C的右侧,B下方。在

打包D时,它必须位于C的右侧和B的下方。因为您将其打包到右侧,它将保留D上方和下方的所有剩余垂直空间。在

当你沿着底部包装E时,它唯一能去的地方是B下面,C的右边,D的左边。在

由于包装器沿一个侧面分配所有空间的特性,当所有部件都放在同一个轴上时,打包机的工作效果最好—无论是垂直还是水平堆叠。当您想像使用C和D那样切换轴时,通常最好将它们放在单独的框架中。在这个框架中,你可以从左到右放置小部件,但是框架可以像其他小部件一样保持在从上到下的轴上。在

注意:这就是代码中实际发生的情况:E被压缩在C和{}之间。由于各种原因它是不可见的,但是如果你给它一个明确的大小和颜色,它就会出现。在

了解更多信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值