在更新小部件时,您什么时候不需要使用grid_dullet



我正在观看一个tkinter教程,在该教程中,讲师使用grid_forget方法在添加新图像之前删除包含图像的标签。他解释说,这是为了防止新图像与旧图像重叠。然而,在本教程的稍后部分,他通过创建一个新按钮并将其添加到网格中的同一单元格来更新按钮的功能,而从未调用grid_forget。他从未解释过为什么这里不需要grid_forget

在我看来,如果没有grid_forget,新图像会与旧图像重叠,那么新按钮也会与旧按钮重叠,如果不断调用,可能会导致内存泄漏。但显然情况并非如此。为什么情况不同?

更一般地说,什么时候需要用grid_forget显式清除小部件,什么时候只需添加到同一个单元格就可以隐式清除它?

这是一个糟糕的教程。您永远不应该通过重新创建小部件来更新它,您应该使用config方法来更新已经存在的小部件。

但为了回答你的问题:他本应该去掉旧纽扣,但可能没有,因为新纽扣保证与旧纽扣大小相同或更大,因此完全覆盖了它。旧的Button仍然会在内存中,当你构建它们的堆栈时,它们会减慢你的程序速度,所以这样做也是一个非常糟糕的主意。它永远不会被隐含地清除,只会被覆盖。

最新更新