2

そのため、TCL / TKを使用してインターフェイスを作成していますが、下の図のような奇妙な問題が発生しています。左側の2つのフレーム(赤色)は同じ方法で作成されています。ラベルは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

私のGUI

4

1 に答える 1

3

問題は、gridジオメトリ マネージャーが下のウィジェットの余分なスペースをどう処理するかわからないため、すべてのセルを中央に配置することです。(左右両方にギャップがありますが、ウィンドウ全体が制限されているため、ここでは上部と下部にはギャップがありません。) これは実際に必要なものではないことがよくありますが、実際に取得したいものを明確にすることをお勧めします。

最適な修正方法は、余分なスペースを受け取る列を 1 つ指定することです。この列は、左または右の列、またはウィジェットがまったく含まれていない列のいずれかです。スペースを処理する必要がある列は、ゼロ以外の重みを持つように構成する必要があります。重み付けに応じて余分なスペースを共有する場合、2 つの列にゼロ以外の重みを与えることもできます。

# 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

それらを試してみてください!自分に最適な方法を見つけて、それを使用してください。

于 2013-03-20T20:48:52.457 に答える