2010-10-19 49 views

回答

18

grid用于布置网格中的小部件。另一个答案是“覆盖图”,这有点不恰当。它不覆盖任何东西,它只是沿着行和列边界排列小部件。它非常适合创建表格和其他结构化布局类型。

pack沿着盒子的侧面放置东西。它擅长于在一行或一列中进行布局(认为工具栏或对话框中的按钮行)。它对于非常简单的布局也很有用,例如左侧的导航器和右侧的主工作区。它可以用来创建非常复杂的布局,但它会变得棘手,直到你完全理解包装算法。

您不能同时使用具有共同父项的小部件的网格和包。你的应用程序可能会工作,但更有可能进入无限循环,因为每个管理器都试图布置小部件,然后其他人会通知小部件更改大小并尝试调整等。

第三个管理是place。 Place非常适合做绝对定位(例如:在给定的x/y处放置小部件)或相对(例如:将小部件放置在某个其他小部件的右边缘)。

尽管无法在同一个容器(容器通常是一个框架)中混合使用网格和包装,但您可以使用在单个应用程序中同时使用网格和包装。这是非常非常普遍的,因为每个人都有优点和缺点。我经常使用这两种方法。