Tcl 框架内的标签赢得';不对齐

Tcl 框架内的标签赢得';不对齐,tcl,tk,Tcl,Tk,因此,我正在使用TCL/TK制作一个界面,我遇到了一个奇怪的问题,如下图所示。左侧的两个框架(红色)采用相同的方式制作。标签应该粘贴在e和w上,但正如您所看到的,第一个标签下的框架并没有以相同的方式排列标签 我创建这样的框架 labelframe .bswSelfTestFrame -text "BSW Self Test Summary" labelframe .bswStatusFrame -text "BSW General Status" 我是这样包装的 pack .bswStatus

因此,我正在使用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

问题在于,
网格
几何体管理器不知道如何处理下部小部件中的额外空间,因此它将所有单元格居中。(左侧和右侧都有间隙,但顶部和底部都没有间隙,因为整个窗口受到约束。)这通常不是真正想要的,但它确实鼓励您明确自己想要的是什么

最好的解决办法是指定一列来接收额外的空间。此列可以是左侧或右侧,甚至可以是一个完全没有小部件的列。必须处理空间的列应配置为非零权重。您还可以为两列指定非零权重,此时它们将根据其权重共享额外的空间

# 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