Python Tkinter框架布局,权重和大小调整,网格几何管理器

问题描述

我想我对网格的工作方式不了解...

我的问题似乎与此SO问题有关: Python tkinter Text widget fill fixed sized frame using grid

使用功能grid_columnconfigure()grid_rowconfigure(),答案是要赋予项目一定的权重以使其占用更多空间。

下面是一个简单示例的代码。 我要实现的目标是能够指定frame0的大小,将其粘贴到根窗口的所有侧面,然后将子框架frame1粘贴到{{ 1}}左,上,右,并在调整应用程序主窗口大小时进行拉伸/收缩。

因此,最初,我希望应用程序以500x350的大小启动。 frame0会达到自然的高度,并且基本上是500像素宽(减去一点填充)。

acw1668发表评论后,我更新了代码以配置frame1并将其权重设置为1。现在,Entry的大小可以变化,以占用任何水平空间,就如我所愿。但是,尽管我为root指定了明确的大小,但GUI仍以“自然”大小启动。我不明白为什么几何管理器不将500x350视为自然尺寸并分配它?

有人能看到如何使初始发射的尺寸达到预期吗?

frame0

解决方法

作为参考,以下是结合了acw1668建议的代码。

GUI现在将以预期的大小启动。尽管您可以强制缩小应用程序窗口,但框架不会缩小到500像素以下(即Entry不会折叠回自然大小),这是一个次要问题。那是一个单独的问题。

我看到整个布局和调整业务规模有些微妙,但我还有路要走。 ;)

希望这个问题对遵循同样的观点的其他人也具有一定的教学意义:

.includes()