【发布时间】:2018-08-13 08:53:53
【问题描述】:
在我看来,使用 pack 就像将所有小部件放在松紧带中,这意味着该包将尝试将小部件保持在一个小而整洁的区域。
这个类比与事实有多接近,有哪些不一致之处?
【问题讨论】:
标签: python python-3.x tkinter tkinter-layout
在我看来,使用 pack 就像将所有小部件放在松紧带中,这意味着该包将尝试将小部件保持在一个小而整洁的区域。
这个类比与事实有多接近,有哪些不一致之处?
【问题讨论】:
标签: python python-3.x tkinter tkinter-layout
这个类比一点也不准确。 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)的角度编写的,但无论您使用哪种语言,基本方面都是相同的。
【讨论】: