2016-06-14 6 views
1

以下は私のコード例です。 いくつかのオプションを選択する必要があるたびに、メニューを再度開くのは非常に面倒です。チェックボックスが選択されるたびに、メニューは自動的に閉じます。 どうすればそれを防ぐことができますか?チェックボタンを選択するたびにメニューが閉じないようにする方法

#!/usr/bin/env wish 


frame .top 
pack .top -expand yes -fill both 
wm title . TEST 

menubutton .top.fillmet -text "select fill metals" -menu .top.fillmet.mtls 

set m .top.fillmet.mtls 
menu $m 

$m add checkbutton -label "fill m2" -variable fillm2 -onvalue "fillm2" -offvalue "" 

$m add checkbutton -label "fill m3" -variable fillm3 -onvalue "fillm3" -offvalue "" 
$m add checkbutton -label "fill m4" -variable fillm4 -onvalue "fillm4" -offvalue "" 
$m add checkbutton -label "fill m5" -variable fillm5 -onvalue "fillm5" -offvalue "" 
$m add checkbutton -label "fill m6" -variable fillm6 -onvalue "fillm6" -offvalue "" 
$m add checkbutton -label "fill m7" -variable fillm7 -onvalue "fillm7" -offvalue "" 
$m add checkbutton -label "fill m8" -variable fillm8 -onvalue "fillm8" -offvalue "" 
$m add checkbutton -label "fill m9" -variable fillm9 -onvalue "fillm9" -offvalue "" 
$m add checkbutton -label "fill m10" -variable fillm10 -onvalue "fillm10" -offvalue "" 
$m add checkbutton -label "fill m11" -variable fillm11 -onvalue "fillm11" -offvalue "" 
$m add checkbutton -label "fill m12" -variable fillm12 -onvalue "fillm12" -offvalue "" 


pack .top.fillmet 

enter image description here

答えて

0

おそらく別の方法は、この特定のユーザ・インタフェースのためのより良い仕事でしょうか?

これは、 を選択できるオプションのリストで新しいトップレベルウィンドウを表示します。グローバルfillm配列には の結果が格納されます。

proc doOptions { } { 
    global fillm 

    set w .optfillmet 
    toplevel $w 
    for {set i 2} {$i < 13} {incr i} { 
    checkbutton $w.cb$i -text "fill m$i" -variable fillm($i) \ 
      -onvalue fillm$i -offvalue "" 
    pack $w.cb$i -in $w -side top -anchor w 
    } 
    button $w.b -text close -command [list destroy $w] 
    pack $w.b -in $w -side top -anchor e 
} 

frame .top 
pack .top -expand yes -fill both 
wm title . TEST 

# .top.fillmet.mtls ; # redundant line 
menu .top.fillmet 
.top.fillmet add command -label "select fill metals" -command doOptions 
. configure -menu .top.fillmet 
+0

私はあなたの提案が本当に良いと思います。 私の例では点線をクリックするだけで同じテクニックを使用できます。メニューは独立したウィンドウに変わり、チェックボックスを選択すると自動的に閉じられません。よりエレガントなソリューションを知っているかもしれません。 –

関連する問題