【问题标题】:Label inside a frame won't align the same框架内的标签不会对齐
【发布时间】:2013-03-21 04:48:52
【问题描述】:

所以我正在使用 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

【问题讨论】:

    标签: tcl tk


    【解决方案1】:

    问题在于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
    

    试试看!找出最适合您的方法并加以使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-13
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多