Grid sticky 选项不会收缩 slave

Grid sticky option doesn't shrink slave

我正在尝试创建包含三个 canvases 的 GUI。

我要创建的视图如下:

--------------------------------------------
|    |                                |    |
|    |                                |    |
|    |                                |    |
|    |                                |    |
--------------------------------------------

左右两个窄canvas,中间一个大canvas。 这是我的代码:

#!/bin/sh  
# \
exec wish "[=11=]" 

canvas .lib
canvas .lef -background "black"
canvas .lay

grid .lib -row 0 -column 0 -sticky ns 
grid .lef -row 0 -column 1 -sticky nsew
grid .lay -row 0 -column 2 -sticky ns

# Added as proposed by Donal Fellows
grid columnconfigure . 1 -weight 1

但是我得到了所有 canvas 相同尺寸的订单,而不是我上面描述的顺序。

网格几何管理器使用加权系统将额外的 space 重新分配给列(和行),但所有列(和行)都从零权重开始,因此额外的 space 不会默认情况下完全分配。您必须明确地为该列赋予非零权重。

grid columnconfigure . 1 -weight 1

请注意,权重适用于整个列,而不是其中的单个小部件,因此无法在添加小部件时设置权重。

如果 canvas 没有 'fix' 列宽,您可以在创建 canvas 时使用 -width 选项设置特定宽度:

canvas .lib -width 100
canvas .lef -background "black" -width 500
canvas .lay -width 100

在其他一切都相同的情况下,我得到的结果是:

如果你以后想改变canvas的宽度,你当然可以使用类似.lib configure -width 200的东西来改变.lib canvas的宽度200 像素