1

对我来说,使用 pack 就像把你所有的小部件放在一个松紧带里,这个包的含义是试图把你的小部件放在一个小而整洁的区域。

这个类比与事实有多接近,它的不一致之处是什么?

4

1 回答 1

2

这个类比一点也不准确。pack不会试图把东西放在一个“小而整洁的区域”,它和松紧带真的一点关系都没有。

pack在概念上非常简单:它将小部件排列在父小部件中未分配空间的边缘。想到这一点的最简单方法是,您从外部填充一个盒子,然后自己朝中间移动。使用pack,您不断地填充一个空腔,这就是为什么这被称为腔模型

当您将小部件放置在父小部件的空腔内时,您将其放置在空腔的一侧。然后,小部件占据了该空腔的整个一侧。例如,如果您使用选项打包某些东西side="left",则小部件将占据腔体的整个左侧,然后为下一个小部件减小腔体的大小。如果父控件的宽度为 1000 像素,子控件的宽度为 100 像素,那么您会将下一个子控件的空腔缩小到 900 像素宽。

可以在Brent Welch、Ken Jones 和 Jeffrey Hobbs 所著的《Tcl 和 Tk 中的实用编程pack》一书中找到对工作原理的绝对最佳和最完整的描述。可以在 tcl/tk pack 手册页中找到对打包程序算法的简明但完整的描述。它是从 tcl/tk 程序(相对于 python/tkinter)的角度编写的,但无论您使用哪种语言,基本方面都是相同的。

于 2018-08-13T12:15:07.977 回答