如何在 tkinter 中恢复被破坏的小部件?

问题描述

def change_section_to_main():
    SUB_SECTION.destroy()
    APP_MAIN_FRAME.pack()

我想恢复小部件“APP_MAIN_FRAME”。我以为我可以用 pack() 做到这一点,结果我错了。我不断收到此错误 >>

_tkinter.TclError: bad window path name ".!frame

解决方法

您无法“破坏”小部件。一旦它被摧毁就不能再使用了。

通常,解决这个特定问题的方法是隐藏小部件而不是销毁它。您可以使用 pack_forgetgrid_forgetgrid_removeplace_forget 之一隐藏它,具体取决于您想要发生的事情以及使用哪种工具 (packgridplace) 用于将其添加到窗口中。

如果您希望经常隐藏和显示小部件,grid 是最佳选择,因为 grid_remove 会记住该项目的放置方式。随后不带参数调用 grid() 将恢复所有设置。 packplace 在忘记时不​​记得小部件的配置。