人们为什么说“不要使用地方()”?

时间:2017-03-28 14:32:48

标签: python tkinter

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

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

我和其他选项保持不变,所以我决定试试.place()。结果.place()正是解决我的布局问题所需要的,我只是不明白为什么每个人都在讨厌.place()

.place()是否存在固有错误?或者除了易于使用之外,人们是否更喜欢使用.pack().grid()出于某些实际原因?

2 个答案:

答案 0 :(得分:5)

我不确定您有哪些证据表明所有人表示不使用place。我怀疑如果您通过stackoverflow帖子判断,您大部分时间都会阅读我的观点而不是一百种不同的意见。

我建议反对place主要是因为它需要更多的工作来制作响应字体,分辨率和窗口大小变化的UI。虽然可以编写一个使用场所的GUI并对这些内容做出响应,但需要做很多工作才能做好。

packgrid优于place的一个好处是,它们允许tkinter正确配置根和Toplevel窗口的大小。使用place,您必须对大小进行硬编码。 Tkinter非常擅长使窗户成为完全正确的尺寸而无需决定明确的尺寸。

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

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

答案 1 :(得分:4)

grails.gorm.autowire = true没有什么问题,尽管使用.placegrid会为您提供更多可维护的代码。如果要添加某个功能,则pack会要求您更改绝对展示位置的负载以适应按钮。

如果您需要使用它然后使用它,它没有真正的问题,它不是许多问题最易维护的解决方案。正如你所说,这是一个偏好和易用性的问题。

编辑:有一个很好的答案你可以阅读here