对我来说,使用 pack 就像将所有小部件放在松紧带内一样,这意味着 pack 会尝试将您的小部件保留在一个小而整齐的区域中。
这个类比与事实有多接近,有哪些不一致之处?
最佳答案
这个类比一点也不准确。 pack
并不试图将东西保持在“小而整齐的区域”,而且它实际上与松紧带完全没有关系。
pack
在概念上非常简单:它将小部件排列在父小部件中未分配空间的边缘周围。最简单的思考方法是,你从外面装满一个盒子,然后向中间努力。使用pack
,您会不断填充空腔,这就是为什么它被称为腔模型。
当您将一个小部件放置在父小部件的空腔内时,您是将其沿着空腔的一侧放置。然后,该小部件占据该空腔的整个侧面。例如,如果您使用选项 side="left"
打包某些内容,则该小部件将占据空腔的整个左侧,然后减小下一个小部件的空腔大小。如果父窗口部件的宽度为 1000 像素,子窗口部件的宽度为 100 像素,那么您将把下一个子窗口部件的空腔宽度缩小到 900 像素。
关于 pack
工作原理的绝对最好、最完整的描述可以在本书 Practical Programming in Tcl and Tk, by Brent Welch, Ken Jones, and Jeffrey Hobbs 中找到。 。加壳算法的简洁但完整的描述可以在 tcl/tk pack man page 中找到。 。它是从 tcl/tk 程序(相对于 python/tkinter)的角度编写的,但无论您使用哪种语言,基本方面都是相同的。
关于python - Tkinter 包布局 : Elastic band analogy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51818550/