2016-12-19 5 views
0

Мой код уничтожает некоторые виджеты, а затем создает новые виджеты, а затем в конце приложения кнопка спрашивает, хочу ли я перейти к началу. Эта кнопка вызовет конструктор классов, который повторно инициализирует каждую переменную и начнет повторно рисовать те же старые виджеты. Проблема в том, что виджеты, даже если они новы, сохраняют свои последние значения перед уничтожением.Виджет Tkinter сохраняет свое состояние после разрушения и перестройки

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) 

В этом коде, например, Checkbutton картографирования сохранит свои последние значения, когда отображение перезвонил в новом цикле.

Я хочу, чтобы контрольная кнопка была новой, как если бы она была впервые создана.

Спасибо за вашу помощь

ответ

0

Вы не можете использовать обычные переменные для атрибута variable. Они должны быть примером StringVar, IntVar, DoubleVar, или BooleanVar.

+0

Привет, Если переменная является кортежем, что мне делать? –

+0

@TarikMokafih: вы не можете связать кортеж с помощью «Checkbutton» с помощью атрибута 'variable'. Он должен быть одним из специальных объектов переменной tkinter. –

Смежные вопросы