何时在tkinter中使用包或网格布局?

时间:2010-12-09 17:23:24

标签: python user-interface layout tkinter ttk

是否有关于何时应该使用pack vs. grid作为其布局的最佳实践提示?

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

要开始对话,似乎有一个用于支持grid vs. pack的用例是当人们想要显示/隐藏小部件时。

3 个答案:

答案 0 :(得分:11)

两者本质上都不比另一方好。每个人都有优点和缺点。了解它们的含义以及使用哪种选择变得显而易见。

如果你需要在网格中放置东西,

grid会更容易使用。如果你需要做的只是将一些小部件放在一行或单列中,pack通常更容易使用。中间有很多灰色区域,两者都不一定比另一个好。

另外要考虑的是你在问题中所说的内容:如果你想在运行时显示和隐藏小部件,grid可能是最好的选择,因为grid_remove方法会记住如果要重新添加窗口小部件,则为所有已配置属性的值。

就个人而言,我的第一选择总是使用pack因为我没有grid命令时首先学习Tk。如果我无法在pack中轻松完成,或者如果我非常清楚地在网格中放置内容,我将使用grid

答案 1 :(得分:9)

我总是建议网格包装用于抛光应用。只有少数边缘情况,包装更容易,适合账单(一行或一列)。网格具有更好的“可组合性”(例如网格元素的兆小部件或网格元素)。偏好网格的原因是它提供的额外微调选项。使用重量(影响btw增长和缩小),minsize和maxsize,以及强制统一行/列等便利功能。

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

BTW,包和网格都可以显示/隐藏子元素,尽管两者之间的语法略有不同。网格稍微好一些,因为'remove'(而不是'forget')会记住slave小部件上的网格选项。

答案 2 :(得分:2)

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