我试图创建包含三幅画布的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
但是,相反我在上面描述的顺序,我得到了所有相同尺寸的画布。
答案 0 :(得分:1)
如果您没有“修复”画布的列宽,则可以在创建画布时使用-width
选项设置特定宽度:
canvas .lib -width 100
canvas .lef -background "black" -width 500
canvas .lay -width 100
其他一切都一样,我得到的结果是:
如果您想稍后更改画布的宽度,您当然可以使用.lib configure -width 200
之类的内容将.lib
画布的宽度更改为200像素。
答案 1 :(得分:0)
网格几何管理器使用加权系统将额外空间重新分配给列(和行),但所有列(和行)都以零权重开始,因此默认情况下根本不会分配额外空间。你必须明确地给该列一个非零权重。
grid columnconfigure . 1 -weight 1
请注意,权重适用于整个列,而不适用于其中的各个小部件,因此在添加小部件时无法设置权重。