网格粘性选项不会缩小从属

时间:2015-01-21 09:59:31

标签: tcl tk

我试图创建包含三幅画布的GUI。

我想要创建的视图如下:

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

左右两个狭窄的画布,中间有一个大画布。 这是我的代码:

#!/bin/sh  
# \
exec wish "$0" 

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

但是,相反我在上面描述的顺序,我得到了所有相同尺寸的画布。

canvases

2 个答案:

答案 0 :(得分:1)

如果您没有“修复”画布的列宽,则可以在创建画布时使用-width选项设置特定宽度:

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

其他一切都一样,我得到的结果是:

enter image description here

如果您想稍后更改画布的宽度,您当然可以使用.lib configure -width 200之类的内容将.lib画布的宽度更改为200像素。

答案 1 :(得分:0)

网格几何管理器使用加权系统将额外空间重新分配给列(和行),但所有列(和行)都以零权重开始,因此默认情况下根本不会分配额外空间。你必须明确地给该列一个非零权重。

grid columnconfigure . 1 -weight 1

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