我一直在为自己制作一个笔记记录程序,但是很顺利但是我在使用.pack()
或.grid()
将我的所有小部件放在我想要的位置时遇到了很多问题选项。
环顾四周后,我发现我可以使用.place()
选项。在我决定使用.place()
之前,我发现无数的论坛帖子说“不要使用.place()
!”。
我和其他选项保持不变,所以我决定试试.place()
。结果.place()
正是解决我的布局问题所需要的,我只是不明白为什么每个人都在讨厌.place()
。
.place()
是否存在固有错误?或者除了易于使用之外,人们是否更喜欢使用.pack()
和.grid()
出于某些实际原因?
答案 0 :(得分:5)
我不确定您有哪些证据表明所有人表示不使用place
。我怀疑如果您通过stackoverflow帖子判断,您大部分时间都会阅读我的观点而不是一百种不同的意见。
我建议反对place
主要是因为它需要更多的工作来制作响应字体,分辨率和窗口大小变化的UI。虽然可以编写一个使用场所的GUI并对这些内容做出响应,但需要做很多工作才能做好。
pack
和grid
优于place
的一个好处是,它们允许tkinter正确配置根和Toplevel
窗口的大小。使用place
,您必须对大小进行硬编码。 Tkinter非常擅长使窗户成为完全正确的尺寸而无需决定明确的尺寸。
此外,使用place
的应用程序的长期维护很困难。如果要添加新窗口小部件,几乎肯定必须调整其他窗口小部件。使用grid
和pack
,您可以更轻松地添加和删除小部件,而无需更改所有其他小部件的布局。如果我在使用tk和tkinter多年来学到了什么,那就是我的小部件布局在开发过程中会改变 lot 。
place
主要用于边缘情况。例如,如果您想将单个窗口小部件置于另一个窗口小部件中心,place
非常棒。此外,如果您想要放置一个窗口小部件,使其独立于其他窗口小部件,place
也非常适合。
答案 1 :(得分:4)
grails.gorm.autowire = true
没有什么问题,尽管使用.place
和grid
会为您提供更多可维护的代码。如果要添加某个功能,则pack
会要求您更改绝对展示位置的负载以适应按钮。
如果您需要使用它然后使用它,它没有真正的问题,它不是许多问题最易维护的解决方案。正如你所说,这是一个偏好和易用性的问题。
编辑:有一个很好的答案你可以阅读here。