0

内部にウィジェットを含むウィンドウがあります。ウィンドウのサイズを手動で変更すると、高さが縮小されたときにウィジェットが自動的にスケーリングされますが、幅が変更されたとき、または高さが初期の高さを超えて拡大されたときはスケーリングされません。ウィジェットをウィンドウの境界にスタックするにはどうすればよいですか?

ウィンドウを作成するためのコード:

wm title $base "KitKite Sparam Viewer"
set frm_main      [frame  $base.main_frm]
pack $frm_main

grid [frame $frm_main.graph ] -row 1 -column 1
set g [sparam_graph_widget $frm_main.graph graph]

grid [set frm [frame $frm_main.frm]] -row 1 -column 2
#from and to frame
set from      [frame $frm.from -relief ridge -bd 2]
set from_lbl  [label $from.lbl -text "From:"]
set f_tbl_frm [frame $from.tbl_f]
set to        [frame $frm.to -relief ridge   -bd 2]
set to_lbl    [label $to.lbl   -text "To:"]
set t_tbl_frm [frame $to.tbl_t]

grid $from      -column 1 -row 1 -sticky nwe
grid $from_lbl  -row 1 -sticky nsew
grid $f_tbl_frm -row 2 -sticky nsew
grid $to        -column 2 -row 1 -sticky nwe
grid $to_lbl    -row 1 -sticky nsew
grid $t_tbl_frm -row 2 -sticky nsew

set from_t [sparam_table_widget $f_tbl_frm f_tbl]
set to_t   [sparam_table_widget $t_tbl_frm t_tbl]

set data        [frame $frm.data]
set data_lbl    [label $data.lbl -text "Choose data type to show"]
set isi         [checkbutton $data.cb_isi -variable cb(isi) -command [list __sp_data_changed isi $g] -text ISI       ]
set xt          [checkbutton $data.cb_xt  -variable cb(xt)  -command [list __sp_data_changed xt  $g] -text XT        ]
set ref         [checkbutton $data.cb_ref -variable cb(ref) -command [list __sp_data_changed ref $g] -text Reflection]
set conf_button [button $data.bt_conf -text "Configure connections" -command [list __sp_configure_datapath]]

grid $data        -column 1 -row 2 -columnspan 2 -sticky new
grid $data_lbl    -column 1 -row 1 -columnspan 2 -sticky nsew
grid $isi         -column 1 -row 2               -sticky nsw
grid $xt          -column 1 -row 3               -sticky nsw
grid $ref         -column 1 -row 4               -sticky nsw
grid $conf_button -column 2 -row 2 -rowspan 3    -sticky nsew

grid rowconfigure $frm 1 -weight 4 -uniform 1
grid rowconfigure $frm 2 -weight 1 -uniform 1
grid rowconfigure $frm_main 1 -weight 5 -uniform 1

$basetoplevel sparam_graph_widgetは使用して作成されたウィンドウの名前でありsparam_table_widget、グラフとテーブルのカスタムウィジェットを作成してフレーム内に配置するプロシージャです (したがって)

4

1 に答える 1

5

少なくとも 1 つのウィジェットを拡張してスペースを消費するには、少なくとも 1 つの列にゼロ以外の重みを設定する必要があります。

grid columnconfigure $containerWidget $someWidgetOrIndex -weight 1

これを行うと、その列は水平方向のすべてのサイズ変更を優先的に処理することに注意してください。これを調整するには、複数の列にゼロ以外の重みを設定し、異なる列に異なる重みを付けます ( の-weight 22 倍の大きな変化を受け取ります-weight 1)。

packまた、外側のフレームに使用されるオプションを調整する必要がある場合もあります。フレームごとに異なる色を設定してデバッグすると、何が起こっているかがわかります…</p>

于 2012-08-02T09:01:04.187 に答える