web-dev-qa-db-ja.com

Python Tkinterがフレームをクリアする

私は新しいコンテンツを書き込むことができるように(情報を更新する)tkinterのフレームをクリアしようとしていますが、どうにもできませんでした。私はこれらを知っています

frame.destroy()
frame.pack_forget()
frame.grid_forget()

ただし、frame.destroy()はフレームを完全に削除します。そして、他の2つは私が望む結果を与えることができませんでした。私が必要なのは、フレーム内のすべてのアイテムをクリアするだけですが、フレーム自体はそのままです。とにかくそれを行うにはありますか?

26
Chris Aung

pack_forgetおよびgrid_forgetは、ウィジェットをビューから削除するだけで、破壊はしません。ウィジェットの再利用を計画していない場合、唯一の本当の選択は、destroyメソッドを使用してウィジェットを破棄することです。

それには、2つの選択肢があります。それぞれを個別に破壊するか、すべての子を破壊するフレームを破壊します。後者が一般的に最も簡単で効果的です。

コンテナフレームを破棄したくないと主張するので、セカンダリフレームを作成します。このセカンダリフレームを、削除するすべてのウィジェットのコンテナにしてから、この1つのフレームを、実行する親の内部に配置しますnot破棄します。次に、この1つのフレームを破棄するだけで、すべての内部ウィジェットが一緒に破棄されます。

20
Bryan Oakley

http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/universal.html

w.winfo_children()
wのすべての子のリストを、最下位(最下位)から最上位(最上位)へのスタック順で返します。

for widget in frame.winfo_children():
    widget.destroy()

フレーム内のすべてのウィジェットを破壊します。 2番目のフレームは必要ありません。

54
Tom.Slick