(Python GUI)对pack(几何管理器)与grid(网格管理器)的理解

=======================================================================
  
参考资料:Programming Python Fourth Edition

=======================================================================

一、在给定的父容器中两着之间互相排斥

如果使用了pack(grid)打包,那么在当前父容器下只能继续使用pack(grid)。必须注意不要将它们混淆!!

当然,若要想同时使用两种管理器,那么只需用在各自的Frame容器组件中隔离两者即可。

二、在布局方式上的不同

通过为几何管理器(pack)提供约束和边,让pack恰如其分的布局好组件。

网格管理器(grid)将组件分配到具体的行数和列数中,二者都从0开始计算。tkinter使用这些坐标,一般再结合组件的尺寸,将它们自动布局在容器中。(仿佛父容器组件就是一张表格)
(Python GUI)对pack(几何管理器)与grid(网格管理器)的理解
图中部件的父容器为Frame。
  对于pack,用side选项来设置左右两侧的部件,就像放置拼图一样。只能大概的指定放置的方位。
  对于grid,采取为每个组件分配row和column值的方法,在父容器的网格空间中进行定位。可以指定精确的位置进行放置

三、填充顺序上导致裁切效果的不同

对于pack:一个组件可以获得剩余空间中完整的一条边,先填充的对象最后被裁切掉(在你缩小你的窗口时能够观察到)。
对于grid:则通过网格行为来实现裁切效果。