Tkinter 小部件在被销毁和重建后保持其状态

Tkinter widget keeps its state after being destroyed and re-built

我的代码销毁了一些小部件,然后构建了新的小部件,然后在应用程序的末尾有一个按钮询问我是否要开始。此按钮将调用 class 构造函数,该构造函数重新初始化每个变量并开始重新绘制相同的旧小部件。问题是小部件即使是新的也会在销毁前保留其最新值。

def mapping(self):
        sort_frame = Frame(self.top_frame)
        sort_frame.grid(row=0,column=1)
        sort = False
        Checkbutton(sort_frame, text="Sort: ", variable=sort, onvalue=True, offvalue=False,command=lambda fr=sort_option_frame, nx =      next_button : self.enable_sort(fr,nx)).pack(side=TOP)
        next_button = Button(self.bottom_frame, text='Next',borderwidth=1, command=self.output_select)
        next_button.pack( side = RIGHT)

    def output_select(self):
        for widget in self.top_frame.winfo_children():
            widget.destroy()
        for widget in self.bottom_frame.winfo_children():
            widget.destroy()
        #new widgets drawing
        Button(self.bottom_frame, text='New file',borderwidth=1, command=self.restart).pack( side = TOP)

    #This UI resets the application for a new cycle
    def restart(self):
        for widget in self.top_frame.winfo_children():
            widget.destroy()
        for widget in self.bottom_frame.winfo_children():
            widget.destroy()
        self.__init__(self.root)

例如在这段代码中,mapping上的Checkbutton会在新的循环回调mapping时保持最新的值

我希望复选按钮是新的,就好像它是第一次创建的那样。

感谢您的帮助

您不能为 variable 属性使用普通变量。它们需要是 StringVarIntVarDoubleVarBooleanVar.

的实例