具有相同行和列的Tkinter网格布局管理器的行为是什么?

时间:2018-11-21 08:49:38

标签: python tkinter

我正在查看Tkinter的文档,并且很好奇当使用After布局管理器使小部件具有相同的行和列时小部件的行为。


据我所知,这是网络上最详细的解释:

  

列和行

     

使用网格,为小部件分配一个“列”号和一个“行”号,以指示它们彼此之间的相对位置。 因此,同一列中的所有小部件都将位于彼此之上或之下,而同一行中的所有小部件将位于彼此的左侧或右侧。

     

列号和行号必须是整数,第一列和行的开头应为0。您可以在列号和行号中保留空格(例如,列0、1、2、10、11、12、20、21),如果您打算稍后在用户界面的中间添加更多小部件,这将非常方便。

     

每列的宽度(或每行的高度)取决于列或行中包含的小部件的宽度或高度。这意味着在草绘用户界面并将其划分为行和列时,您无需担心每个列或行的宽度相等。

     

(取自https://tkdocs.com/tutorial/grid.html,2018年11月21日)

     

[重点矿]


但是,并不清楚在行同一列中的窗口小部件会发生什么。尽管grid可能会有一些相互作用,但似乎还没有grid(**options)可以指定在单元中放置冲突小部件的位置。

Tkinter的sticky布局管理器是否按声明的顺序从左到右和从上到下放置“碰撞”小部件?调整根窗口小部件(通常是框架或窗口)的大小时,包含多个窗口小部件的单元的行为如何?有没有机制可以在发生冲突时覆盖默认行为?


编辑:我用来测试行为的代码。似乎只显示了最后一个标签。

grid

1 个答案:

答案 0 :(得分:2)

  

Tkinter的网格布局管理器是否按声明的顺序从左到右和从上到下放置“碰撞”小部件?

它不会将小部件彼此相对放置在同一单元格中。它们实际上是堆叠在一起的,具有较高堆叠顺序的窗口小部件可能会掩盖具有较低堆叠顺序的窗口小部件。

  

调整根窗口小部件(通常是框架或窗口)的大小时,包含多个窗口小部件的单元格的行为如何?

单个单元格中可能有两个小部件这一事实根本不会影响调整大小的行为。所有小部件均根据网格管理器的常规规则进行调整。

  

是否有一种机制可以在发生冲突时覆盖默认行为?

不。如果要控制单个网格单元中的多个窗口小部件,则应将这些窗口小部件放在一个框架中,然后将该单个框架放在网格单元中。这样一来,您就可以完全控制框架中各个小部件之间的相对位置。