框架内的标签不会对齐

时间:2013-03-20 14:46:39

标签: tcl tk

所以我正在使用TCL / TK创建一个界面,我有一个奇怪的问题,如下图所示。左侧的两个框架(红色)以相同的方式制作。标签应粘在e和w上,但正如您所看到的那样,第一个框架下的框架不会以相同的方式排列标签。

我像这样创建框架

labelframe .bswSelfTestFrame -text "BSW Self Test Summary"
labelframe .bswStatusFrame -text "BSW General Status"

我像这样打包框架

pack .bswStatusFrame -in .hkframe -padx 3 -pady 3 -anchor n -expand yes -fill both
pack .bswSelfTestFrame -in .hkframe -padx 3 -pady 3 -expand yes -fill both
pack .hkframe -side left -expand no

标签

grid .bswStatusFrame.lBSWCurrentMode -in .bswStatusFrame -padx 5 -pady 2 -row 1 -column 1 -sticky w
grid .bswStatusFrame.vBSWCurrentMode -in .bswStatusFrame -padx 10 -pady 2 -row 1 -column 2 -sticky e

grid .bswSelfTestFrame.lLEONRAMtestErr -in .bswSelfTestFrame -padx 5 -pady 2 -row 1 -column 1 -sticky w
grid .bswSelfTestFrame.vLEONRAMtestErr -in .bswSelfTestFrame -padx 10 -pady 2 -row 1 -column 2 -sticky e

my GUI

1 个答案:

答案 0 :(得分:3)

问题是grid几何管理器不知道如何处理下部小部件中的额外空间,因此它将所有单元格集中在一起。 (左右两边都有间隙,但是顶部和底部都没有间隙,因为整个窗口受到限制。)这通常不是真正想要的,但它确实鼓励你清楚你想要实际得到什么。

最好的解决方法是提名一列来接收额外的空间。此列可以是左列或右列,也可以是根本没有小部件的列。必须处理空间的列应配置为具有非零权重。当他们根据权重分享额外的空间时,你也可以给两列非零权重。

# The simplest fix...
grid columnconfigure .bswSelfTestFrame 1 -weight 1
# Repeat for all master widgets where you want to fix things
# The blank-column version...
grid columnconfigure .bswSelfTestFrame 2 -weight 1
# Note that *I HAVE CHANGED THE COLUMN OF ONE LABEL* below
grid .bswSelfTestFrame.lLEONRAMtestErr -in .bswSelfTestFrame -padx 5 -pady 2 -row 1 -column 1 -sticky w
grid .bswSelfTestFrame.vLEONRAMtestErr -in .bswSelfTestFrame -padx 10 -pady 2 -row 1 -column 3 -sticky e
# The two-weighted-column version, both with the same weight...
grid columnconfigure .bswSelfTestFrame 1 -weight 1
grid columnconfigure .bswSelfTestFrame 2 -weight 1

# Alternatively, with new enough version of Tk...
grid columnconfigure .bswSelfTestFrame {1 2} -weight 1

尝试一下!找到最适合您的方式并使用它。