python - 为什么人们说 "Don' t 使用 place()”?

标签 python tkinter

我一直在为自己开发一个笔记程序并且进展顺利,但是我在使用 .pack() 将所有小部件放置在我想要的位置时遇到了很多问题或 .grid() 选项。

环顾四周后,我发现我可以改用 .place() 选项。在我决定使用 .place() 之前,我发现无数论坛帖子说 “不要使用 .place()!”。

我对其他选择犹豫不决,所以我决定尝试一下 .place()。事实证明 .place() 正是我解决布局问题所需要的,我只是不明白为什么每个人都如此讨厌 .place()

.place() 有什么内在的错误吗?或者人们只是出于某些实际原因而不是易用性而更喜欢使用 .pack().grid()

最佳答案

我不确定您有什么证据表明每个人 都说不要使用place。我怀疑如果您是通过 stackoverflow 帖子来判断,您主要是在阅读我的观点一百次而不是一百次不同的观点。

我不推荐 place 主要是因为它需要更多的工作来制作一个响应字体、分辨率和窗口大小变化的 UI。虽然可以编写一个使用 place 并对这些东西做出响应的 GUI,但要做到正确需要大量工作。

packgrid 相对于 place 的一个优势是它们允许 tkinter 正确配置根和 的大小>顶层窗口。使用 place 时,您必须对大小进行硬编码。 Tkinter 非常擅长使窗口的大小完全正确,而无需您决定明确的大小。

此外,长期维护使用place 的应用程序很困难。如果您想添加一个新的小部件,您几乎肯定必须调整所有其他小部件。使用 gridpack 可以更轻松地添加和删除小部件,而无需更改所有其他小部件的布局。如果我多年来使用 tk 和 tkinter 学到了什么,那就是我的小部件布局在开发过程中发生了很大的变化。

place 主要用于边缘情况。例如,如果您想将一个小部件置于另一个小部件的中心,place 就很棒。此外,如果您想放置一个独立于其他小部件的小部件,place 也非常适合。

关于python - 为什么人们说 "Don' t 使用 place()”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072375/

相关文章:

python - Suds + JIRA = SAXException

python - 在Python中向图像添加对齐文本

python - PyInstaller 创建 exe 文件时不显示 .png img

python - IDLE 无法导入 Tkinter。你的 Python 可能没有为 Tk 配置

python - ttk.Entry.select_range() 适用于 Button,但不适用于 python/tkinter 中的 ttk.Button?

python - Pyemma 转换矩阵返回意外大小的数组

python - 用空格填充列表元素给定最小长度

带有 tkinter 的 android monkeyrunner python 脚本

当用户调整窗口大小时,Python tkinter 小部件的大小调整不均匀

python - python : how? 中的类型转换类