2013-04-14 15 views
8

Piszę program na Python z GUI na podstawie Tkinter i mam pewien problem: muszę usunąć wszystkie elementy podrzędne (bez usuwania elementu nadrzędnego - colorsFrame). Mój kod:Tikster Pythona - jak usunąć wszystkie elementy podrzędne?

infoFrame = Frame(toolsFrame, height = 50, bd = 5, bg = 'white') 
colorsFrame = Frame(toolsFrame) 

# adding some elements 

infoFrame.pack(side = 'top', fill = 'both') 
colorsFrame.pack(side = 'top', fill = 'both') 

# set the clear button 
Button(buttonsFrame, text = "Clear area", 
       command = self.clearArea).place(x = 280, y = 10, height = 30) 

Która z metod jest potrzebna do tego celu: Tkinter? Dzięki

Odpowiedz

14

Można użyć winfo_children aby uzyskać listę wszystkich dzieci danej widget, który można następnie iteracyjne nad:

for child in infoFrame.winfo_children(): 
    child.destroy() 
+1

Tak! To działa! Pojawił się jednak nowy problem: rozmiar bloku 'infoFrame' pozostaje taki sam jak bloków potomnych przed usunięciem. Wiesz, jak rozwiązać problem? –

+2

@RomanNazarkin: krótka odpowiedź brzmi następująco: kiedy niszczysz wszystkie widżety dzieci, pakiet nie myśli już, że jest "właścicielem" okna, ponieważ nie ma dzieci do zarządzania. Z tego powodu nie próbuje zmienić rozmiaru okna. Prostym obejściem jest tymczasowe spakowanie małej ramki 1x1, aby zmienić wielkość ramki zawierającej. –

+0

OK, dziękuję bardzo! –

Powiązane problemy