如何处理网格[Tk]

时间:2016-06-01 15:21:39

标签: grid widget tcl tk

我创建了一个包含五个标签的网格 每个标签连续 但我想在每一行中都有相同大小的前一个标签最小尺寸的一个colone

代码:

label .f0 -text "frame 0"\
    -relief groove \
    -borderwidth 2 \
    -background blue
label .f1 -text "frame 1" \
    -relief groove \
    -borderwidth 2 \
    -background gray
label .f2 -text "frame 2" \
    -relief groove \
    -borderwidth 2 \
    -background green
label .f3 -text "frame 3" \
    -relief groove \
    -borderwidth 2 \
    -background yellow
label .f4  -text "frame 4"\
    -relief groove \
    -borderwidth 2 \
    -background red

grid .f0 -row 1 -column 1 -sticky ewns
grid .f1 -row 2 -column 2 -sticky ewns
grid .f2 -row 3 -column 3 -sticky ewns
grid .f3 -row 4 -column 4 -sticky ew
grid .f4 -row 5 -column 5 -sticky ew

printScr:

enter image description here

所以我的问题是如何填充箭头指示的空格而不是网格

2 个答案:

答案 0 :(得分:2)

您可以使用-columnspan选项进行网格指定要使用的列数:

  grid .f0 -row 1 -column 1 -sticky ewns -columnspan 5

参考文献:grid

修改

foreach i {0 1 2 3 4} {
  grid columnconfigure . $i -weight 1 -uniform labcol
  grid .f$i -column $i -sticky ew -columnspan [expr {5-$i}]
}

这与彼得的minsize相似。它使所有的 列宽度相同。

答案 1 :(得分:1)

第二次尝试)在问题后面添加此代码:

foreach index {1 2 3 4 5} {
    grid columnconfigure . $index -minsize [winfo width .f0]
}

grid configure .f0 -columnspan 5
grid configure .f1 -columnspan 4
grid configure .f2 -columnspan 3
grid configure .f3 -columnspan 2

文档:foreachgridwinfo