2013-04-03 73 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