在我看来,使用包就像将所有小部件放在松紧带中一样,其含义是该包将尝试将小部件保持在一个整洁的小区域。
这个比喻与真相有多近,有什么矛盾之处?
答案 0 :(得分:2)
这种类比根本不准确。 pack
不会试图将事物保持在“小而整洁的区域”中,它实际上与松紧带完全没有关系。
pack
从概念上讲非常简单:它在父窗口小部件中未分配空间的边缘周围排列窗口小部件。想到这一点的最简单方法是,您从外面装满一个盒子,然后朝中间走去。使用pack
,您将不断填充一个空洞,这就是为什么将其称为腔模型的原因。
将窗口小部件放置在父窗口小部件的空腔内时,将其沿着空腔的一侧放置。然后,小部件占据该腔的整个侧面。例如,如果使用选项side="left"
包装某些东西,则小部件将占据型腔的整个左侧,然后为下一个小部件减小型腔的大小。如果父对象的宽度为1000像素,子对象的宽度为100像素,则将下一个子窗口小部件的空腔减小到900像素。
在Practical Programming in Tcl and Tk, by Brent Welch, Ken Jones, and Jeffrey Hobbs一书中可以找到关于pack
的工作方式的绝对最佳和最完整的描述。可以在tcl / tk pack man page中找到有关打包程序算法的简要但完整的描述。它是从tcl / tk程序(相对于python / tkinter)的角度编写的,但无论使用哪种语言,其基本方面都是相同的。