2016-03-29 2 views
0

Я пытаюсь иметь функцию в python, которая очищает экран при нажатии кнопки. Я знаю grid_remove, но не знаю, как его использовать. Также есть способ очистить все от конкретной функции, то есть как «привет», так и «ясно»?Устранение определенных виджетов в tkinter

from tkinter import * 

class Movies: 
    def __init__(self, master): 
     hi = Label(text = "Hello") 
     hi.grid(row = 0, column = 0) 

     clear = Button(text = "Click", command=self.clear) 
     clear.grid(row = 1, column = 0) 
    def clear(self): 
     hi.grid_remove() 




root = Tk() 
gui = Movies(root) 
root.geometry("100x200+0+0") 
root.mainloop() 
+0

Что именно вы подразумеваете под понятием "clear"? Вы хотите уничтожить виджеты и заменить их разными виджетами, или хотите сохранить виджеты, но удалить отображаемый текст (т. Е. Установить метку на пустую строку)? –

ответ

0

Вы можете использовать встроенный в winfo_children методе, если вы просто хотите, чтобы переключить скрытие/показ всех виджетов в любом родитель держит виджеты. Небольшой пример:

from tkinter import * 

class Movies: 

    def __init__(self, master): 

     self.master = master 
     self.state = 1 

     for i in range(5): 
      Label(self.master, text='Label %d' % i).grid(row=0, column=i) 
     self.magic_btn = Button(self.master, text='Make the Magic!', 
      command=self.magic) 
     self.magic_btn.grid(columnspan=5) 

    def magic(self): 

     self.state = not self.state 
     for widget in self.master.winfo_children(): #iterate over all child widgets in the parent 
      #Comment out to clear the button too, or leave to toggle widget states 
      if widget != self.magic_btn: #or some other widget you want to stay shown 
       if self.state: 
        widget.grid() 
       else: 
        widget.grid_remove() 
       print(self.state) 


root = Tk() 
gui = Movies(root) 
root.mainloop() 
Смежные вопросы