31

是否有任何关于何时应在其布局中使用 pack 与 grid 的最佳实践提示?

从我通过谷歌阅读的内容来看,concencus 似乎是网格可以处理任何包装场景,但反之亦然。

为了开始对话,似乎有一个偏爱网格与包的用例是当人们想要显示/隐藏小部件时。

4

3 回答 3

18

两者本质上都不比另一个更好。每个人都有优点和缺点。了解这些是什么以及使用哪个的选择变得显而易见。

grid如果您需要将事物布置在网格中,则使用起来要容易得多。pack如果您只需将一些小部件放在单行或单列中,通常会更容易使用。两者之间有很多灰色区域,两者都不一定比另一个更好。

要考虑的另一件事是您在问题中所说的:如果您想在运行时显示和隐藏小部件,grid这可能是最佳选择,因为该grid_remove方法可以记住所有配置属性的值以防万一重新添加小部件。

就个人而言,我的第一选择始终是使用pack,因为我是在没有grid命令的时候第一次学习 Tk。如果我不能在 中轻松地做到这一点pack,或者如果我非常清楚地将事物布置在网格中,我将使用grid.

于 2010-12-09T20:03:27.277 回答
10

我总是推荐 grid over pack 用于抛光应用。只有少数情况下包装更容易并且符合要求(一行或一列中的所有内容)。网格具有更好的“可组合性”(例如网格元素的网格元素或网格元素)。更喜欢网格的原因是它提供了额外的微调选项。使用权重(影响增长和缩小顺便说一句)、最小尺寸和最大尺寸,以及强制统一行/列等便利功能。

任何大小的完全网格化应用程序将使用(显着)少于等效打包应用程序的帧,并且对内部元素具有更好的收缩/扩展控制。

顺便说一句,pack 和 grid 都可以显示/隐藏子元素,尽管两者的语法略有不同。网格稍微好一点,因为“删除”(而不是“忘记”)会记住从属小部件上的网格选项。

于 2010-12-10T17:38:01.673 回答
2

我个人认为网格更容易使用,所以我会使用它。当然,您可能已经阅读过您永远不应该做的一件事是尝试在同一个容器中同时使用两者。感谢 Bryan Oakley 做出了这样的区分。

于 2010-12-09T17:25:28.280 回答