我一直在为自己开发一个记录笔记的程序,它运行得很好,但是我在使用.pack()
或.grid()
选项将所有的小部件放在我想要的地方时遇到了很多问题。在
环顾四周后,我发现我可以使用.place()
选项。在我决定使用.place()
之前,我在论坛上发现了无数的帖子,说“不要使用.place()
!。在
我对其他选择束手无策,所以我决定试试看。结果发现.place()
正是我解决布局问题所需要的,我只是不明白为什么每个人都那么讨厌{}。在
.place()
是否存在固有的问题?或者人们只是喜欢使用.pack()
和{},而不是为了方便使用?在
Tags:
.place
没有什么问题,尽管使用grid
和{place
将要求您改变绝对位置的负载,以适应按钮。在如果你需要使用它然后使用它,它没有真正的问题,它只是不是许多问题的最可维护的解决方案。正如你所说,这是一个偏好和易用性的问题。在
编辑:有一个很好的答案你可以读到here。在
我不知道你有什么证据表明每个人都不要使用。我怀疑,如果你用stackoverflow的帖子来判断,你多半是在读我的意见一百遍,而不是一百种不同的意见。在
我建议不要使用
place
,主要是因为它需要更多的工作来制作一个能够响应字体、分辨率和窗口大小变化的UI。虽然可以编写一个使用place并对这些事情做出响应的GUI,但它需要大量的工作才能完成。在pack
和grid
都比place
有一个优势,那就是它们允许tkinter正确配置根和Toplevel
窗口的大小。使用place
必须硬编码大小。Tkinter非常擅长使窗口的大小精确到正确的大小,而不必决定显式的大小。在此外,使用}可以更轻松地添加和删除小部件,而不必更改所有其他小部件的布局。如果我多年来使用tk和tkinter学到了什么的话,那就是我的widget布局在开发过程中会发生很多变化。在
place
的应用程序的长期维护是困难的。如果你想添加一个新的小部件,你几乎肯定要调整每一个小部件。使用grid
和{place
主要用于边缘情况。例如,如果您想将一个小部件放在另一个小部件的中心,place
是非常棒的。另外,如果您想放置一个小部件,使其独立于其他小部件,place
也非常适合。在相关问题 更多 >
编程相关推荐