我对 Tcl/Tk 相对较新,但在过去几周内一直在相当成功地使用它,不间断。在大多数情况下,它似乎相当简单。但是,我最近遇到了一个障碍,这可能很简单,但我似乎无法弄清楚。
我已将相当复杂的代码减少到几行来演示问题。
我的简单示例生成两个标签框,每个标签框都有一个简单的标签小部件。当我调整(即展开)主窗口的大小时,我希望“左”框架仅在 y 方向上调整大小,并且我希望“中间”框架在 x 和 y 方向上调整大小。这些部分工作正常。
但是,我还希望框架在调整大小时保持“粘在一起”。也就是说,当它们都调整大小时,我希望“中间”框架与“左”框架保持一致。相反,我看到两者之间的差距正在扩大。
同样,这是来自更复杂程序的简化代码。我试图避免在同一个程序中混合 grid 和 pack 命令,并且在原始更复杂的程序中,使用 grid 变得非常笨拙。因此,首选使用“pack”的解决方案。但适当的解释将是一个好的开始。
我的小例子:
#!/usr/bin/wish
## Set up two main frames
set frameLeft [labelframe .frameLeft]
set frameMiddle [labelframe .frameMiddle]
pack $frameLeft -fill y -expand 1
pack $frameMiddle -fill both -expand 1
pack $frameLeft $frameMiddle -side left -anchor nw
## Instead of the previous 3 lines, I also tried:
#pack $frameLeft -fill y -expand 1 -side left -anchor nw
#pack $frameMiddle -fill both -expand 1 -side left -anchor nw
## Set up component in LEFT frame
set frameOne [labelframe $frameLeft.frameOne]
set labelOne [label $frameOne.labelOne -text "Label One:"]
pack $labelOne -anchor nw
pack $frameOne -anchor nw
## Set up component in MIDDLE frame
set frameTwo [labelframe $frameMiddle.frameTwo]
set labelTwo [label $frameTwo.labelTwo -text "Label Two:"]
pack $labelTwo -side left
pack $frameTwo -anchor nw