python - Tkinter 包布局 : Elastic band analogy

标签 python python-3.x tkinter tkinter-layout

对我来说,使用 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/

相关文章:

python - 如何从字符串python 3中提取日期?

python-3.x - Azure Cli - 如何显示 API 的操作后端(HTTPs 端点)信息

python - pip 安装 libxml2 失败

c - 在 Windows 上嵌入带有 tkinter 支持的 Python 3.5

python - TKinter - 我可以发送背景吗?

python - 使用来自 Celery tasks.py 的 Django Channels 向客户端发送消息

python - 如何返回仅具有 iloc[1,1] 颜色样式和字体样式的特定单元格?

python - 如何覆盖 django-allauth 中的模板?

Python:从父子值列表创建嵌套字典

python - 在 OS X 上的 tkinter 中进行右键单击操作时禁用粘贴突出显示的文本