2017-01-31 5 views
1

私は、異なるウィジェットを含むいくつかのフレームを持つTKアプリケーションを持っています。グリッドフレーム(およびそのコンテンツ)を非表示にするには 私はグリッド削除$枠を使用する「の後には何が必要か。 どうすれば最小限必要なジオメトリにTKのトップレベルのサイズ変更を達成することができますか?TK "grid"と "grid remove"

grid [ttk::frame .f ] -sticky nwse 
grid [ttk::frame .f.f] -sticky nwse 
foreach el {a b c d e f} { 
grid [label .f.f.$el -text "ELEM $el" ] -sticky nwse 
} 
update 
after 2500 
grid remove .f.f 

」ラベルを持たないサイズのトップレベルを持つには「remove .ff」を使用しますか?

+0

私はこれらの行を追加 'グリッド[ラベル.f.c]。更新; 'grid remove 'の後に.f.c' を破棄して動作します。しかし、これは悪い解決策だと思う。 さらに、トップレベルを手動でサイズ変更した後は、これ以上は機能しません。 – tbasien

答えて

0

何について:

WMジオメトリ$のトップレベルの{}

よろしく、私は WMジオメトリ$のトップレベルWHT驚いています

+0

良い考えですが、( 'remove'でも' forget'でも)うまくいきません。私は 'wm geometry 'を使っています。変数$ toplevelが定義されていないので、{} ' –

1

grid removeはグリッドからウィジェットを取り除きますが、そのウィジェットをどのようにレイアウトするかについての情報は忘れません。同じ場所に戻って、ときには便利な操作です)。完全に忘れるには、grid forgetを使用してt彼はウィジェットのレイアウト情報を削除します。

+0

はい、わかっています。しかし、ユーザがウィンドウマネージャを使用してサイズを手動で変更した場合でも、TK GUIに再計算を行う方法をアドバイスできますか?言うことができます:元のサイズにリセットするボタン。 – tbasien

0

島{}。再描画します。すばらしいです。 しかし、私の問題は解決しませんが、状況を理解してください。

toplevelFrame(最上位の唯一のフレーム)がグリッドから削除された場合、トップレベルは「空」であり、再描画されません。

グリッド内にあるウィジェット/フレームのトップレベルの場合は、トップレベルを削除して再描画を行います。

私の例では、.eはヘルパーフレームです。サイズはありません。

package require Tk 
grid [frame .e ] 
grid [frame .f ] -sticky nwse 
foreach el {a b c e f g h} { 
    grid [label .f.$el -text "1ELEM $el" ] -sticky nwse 
} 
update 
after 1000 
grid remove .f