我一直在为自己制作一个笔记记录程序,但是它很顺利但是我把所有的小部件放在我希望它们使用.pack()或.grid()选项的位置时遇到了很多问题.
环顾四周后,我发现我可以使用该.place()选项.在我决定使用之前,.place()我发现无数的论坛帖子说"不要使用.place()! ".
我与其他选项保持不动,所以我决定.place()尝试一下.事实证明.place(),正是我需要解决我的布局问题,而我只是不明白为什么每个人都在讨厌.place()这么多.
有什么本质上错误的.place()吗?或者说人就是喜欢使用.pack()和.grid()超过易用性等一些实际原因是什么?
我不确定您有什么证据表明每个人都说不要使用place。我怀疑如果您通过stackoverflow帖子来判断,您主要是在阅读我的意见一百次,而不是一百种不同的意见。
我建议不place要这样做,主要是因为它需要做更多的工作来使UI响应字体,分辨率和窗口大小的变化。虽然可以编写一个使用place并对这些事情做出响应的GUI,但要做好工作,还需要进行大量工作。
pack和gridover的一个优点place是它们允许tkinter正确配置根目录和Toplevel窗口的大小。随着place你必须硬编码的大小。Tkinter非常擅长使窗口尺寸正确无误,而不必决定显式尺寸。
另外,place很难长期维护所使用的应用程序。如果要添加新的小部件,几乎可以肯定必须调整其他所有小部件。使用grid和pack,无需更改所有其他小部件的布局即可轻松添加和删除小部件。如果我在使用tk和tkinter上学到了很多年,那么在开发过程中我的小部件布局就会发生很大变化。
place对边缘情况最有用。例如,如果您想将单个窗口小部件居中放置在另一个窗口小部件内,那就place太棒了。另外,如果您要放置一个小部件以使其独立于其他小部件,那么这样做place也很棒。
.place尽管使用grid并pack为您提供了更多可维护的代码,但是并没有真正的问题。例如,如果要添加功能,则place要求您更改绝对位置的负载以适合按钮。
如果您需要使用它然后再使用它,则没有任何实际问题,它并不是解决许多问题的最可维护的解决方案。正如您所说,这是喜好和易用性的问题。
编辑:有一个很好的答案,您可以在这里阅读。
| 归档时间: |
|
| 查看次数: |
355 次 |
| 最近记录: |