2017-03-09 16 views
0

ウィンドウのサイズを変更するときに問題が発生する理由を理解できない.別のウィンドウを.c bind cir <1> [list window %x %y]で作成したときにウィンドウが表示されない. 私は、オプションとして<Configure>を使用しましたが、私はTCL TKサイズ変更ウィンドウ:バインド

私のコードの下、あなたの助けのために

感謝を行う方法がわからない:

proc window {crx cry} { 

set w1 .win 
catch {destroy $w1} 
toplevel $w1 

wm minsize $w1 300 100 
wm maxsize $w1 300 100 

label $w1.l -text "$crx $cry" 

pack $w1.l 

} 

wm state . zoomed 

canvas .c -bg ivory 

.c create oval 2 1.5 25 25 -fill #33FF00 -tag cir 
.c create oval 30 30 50 50 -fill #33FF00 -tag cir1 
.c create oval 60 60 90 90 -fill #33FF00 -tag cir2 
.c create oval 90 90 130 130 -fill #33FF00 -tag cir3 

pack .c -fill both -expand 1 

.c bind cir <1> [list window %x %y] 
.c bind cir1 <1> [list window %x %y] 
.c bind cir2 <1> [list window %x %y] 
.c bind cir3 <1> [list window %x %y] 

答えて

1

は、一般的に言えば、それはWHを作ることは悪いGUIのデザインですWindowsのグループは1つに移動します。それはユーザーを混乱させる。それは言った...

<Configure>イベントは主に、これらの日は、その場所に比べ、大きさが変更されていることを意味し、それが「再構成」されるたびにウィジェットに送られます。メインのbindコマンドを使用しなければならず、bindをトップレベルにする場合、トップレベルはデフォルトではトップレベルではない子によって生成されたイベントも聴取する必要があります。通常はフィルタリングが必要です。

bind . <Configure> { 
    if {"%W" eq [winfo toplevel %W]} { 
     puts "reconfigured %W: (%x,%y) %wx%h" 
    } 
} 

あなたが欲しいフィルタイベントをしたら、更新のジオメトリを計算し、wm geometryでそれらを適用します。

+0

応答に@DonalFellowsに感謝します。 – Mkn

関連する問題