grid"和"pack"几何管理器的区别

11 投票
1 回答
13683 浏览
提问于 2025-04-16 05:43

Tkinter的布局管理器gridpack之间的主要区别是什么?

你在项目中通常用哪个?

如果grid更适合对齐对象,那pack的主要用途是什么呢?

1 个回答

25

grid 是用来把小部件(比如按钮、标签等)放在一个网格里的。有人说它是“覆盖一个图形”,其实这说法不太准确。它并不是覆盖什么,而是简单地把小部件按照行和列的边界排列。这个方法非常适合用来创建表格或者其他有结构的布局。

pack 则是把东西放在一个框的边上。它特别适合做那种所有东西都在一行或者一列的布局(比如工具栏里的按钮排成一行,或者对话框里的按钮排成一列)。它也适合非常简单的布局,比如左边是导航栏,右边是主要工作区域。虽然它也能用来创建复杂的布局,但在你完全理解它的打包算法之前,可能会有点棘手。

你不能在有共同父级的小部件上同时使用 grid 和 pack。虽然你的应用可能会运行,但更有可能会进入一个无限循环,因为每个管理器都在尝试布局小部件,然后另一个管理器又发现小部件的大小发生了变化,试图调整等等。

第三种管理方式是 place。place 非常适合做绝对定位(比如:把小部件放在指定的 x/y 坐标)或者相对定位(比如:把一个小部件放在另一个小部件的右边缘)。

虽然你不能在同一个容器(通常是一个框架)中混合使用 grid 和 pack,但你 可以 在一个应用程序中同时使用这两种方法。这是非常常见的,因为它们各有优缺点。我经常同时使用这两种方法。

撰写回答