25

Tkinterでウィジェットをどのように表示および非表示にしますか? エントリーボックスを設置したいのですが、常に表示するわけではありません。tkinter でエントリ ウィジェットやその他のウィジェットを表示および非表示にする機能を誰かに教えてもらえますか? 複数のフレームを持たずにこれを実行できるようにしたいです。

4

3 に答える 3

35

これは、以前に stackoverflow で回答されています。短い答えは、grid_removeを使用して、以前にグリッド経由で追加されたウィジェットを削除できるということです。grid_removeはウィジェットがあった場所を覚えているので、grid()すべてのオプションを再指定しなくても簡単に元に戻すことができます。

pack_forget (パックを使用している場合) とgrid_forget (グリッドを使用している場合)も使用できます。これらは grid_remove と同様に機能しますが、すべての設定が失われる点が異なります。つまり、明示的に画面上の適切な場所に戻す必要があります。

もう 1 つのオプションは、ウィジェットの積み重ね順序を利用することです。のメソッドを使用してウィジェットを兄弟の後ろに隠し、持ち上げて上に上げることができます。例については、この回答を参照してください。

于 2012-04-22T12:50:10.187 に答える
0

TK グリッドの場合、これら 2 つのヘルパー関数が便利だと思います。1 つ目は、ウィジェットの現在の状態をアイテム内に保存してから削除します。2 番目はそれをグリッドに戻し、状態を復元します。

def grid_hide(widget):
  widget._grid_info = widget.grid_info()
  widget.grid_remove()

def grid_show(widget):
  widget.grid(**widget._grid_info)

Python 3.8 でテスト済み。

于 2020-09-16T15:44:49.207 に答える