2013-04-03 123 views
19

我想清除tkinter中的一個幀,以便可以寫入新的內容(刷新信息),但我無法做到這一點。我知道這些Python Tkinter清除幀

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

但是frame.destroy()將完全刪除該幀。而另外兩個也不能給我我想要的結果。我需要的只是清除框架中的每個項目,但框架本身將保持。無論如何去做?

+2

取決於任務,你可以在框架中創建一個框架並銷燬該框架 – User

回答

15

pack_forgetgrid_forget將只從視圖中刪除小部件,它不會銷燬它們。如果你不打算重新使用小部件,你唯一真正的選擇是用destroy方法銷燬它們。

要做到這一點,你有兩個選擇:單獨銷燬每一個,或銷燬將導致其所有孩子被毀的框架。後者通常是最簡單和最有效的。

既然你聲稱你不想破壞容器框架,創建一個二級框架。讓這個二級框架成爲你想要刪除的所有小部件的容器,然後把這個框架放在你要做的父項目而不是想要銷燬。然後,這只是一個摧毀這個框架的問題,所有的內部小部件都會隨着它一起銷燬。

+0

我設法通過創建一個函數來解決我的問題,該框架將重新創建每次我希望它更新時要清除的框架。非常感謝爲了您的幫助,布賴恩,您的回答是信息豐富的。 –

+0

@Chris Aung:你介意分享這個功能嗎?我正在尋找那個,因爲我自己因爲某種原因失敗了。 – Zelphir

+0

在這裏你可以找到一個方法,它的工作原理:http://stackoverflow.com/a/15995920/1829329 – Zelphir