2013-04-14 33 views
8

Tkinter tabanlı bir GUI ile bir program yazıyorum ve ben bir sorunla karşılaşıyorum: TÜM alt öğeleri silme (bir ebeveyn öğesi silme - colorsFrame)). Kodum:Python tkinter - tüm alt öğeleri nasıl silebilirim?

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) 

Tkinter yöntemi için gerekli olan bu hangisi? Teşekkür

cevap

14

Sen o zaman adımlayabilirsiniz belirli bir widget tüm çocukların, bir listesini almak için winfo_children kullanabilirsiniz:

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

Evet! Bu işler! Ancak yeni problem ortaya çıktı: 'infoFrame' bloğunun boyutu, silmeden önce çocuk bloklarıyla aynı kalıyor. Sorunu nasıl çözeceğimi biliyor musunuz? –

+2

@RomanNazarkin: kısa cevap şudur: Çocukların tüm gereçlerini yok ettiğinizde, paket artık çocuk sahibi olmadığından dolayı pencerenin "sahibi" olduğunu düşünmez. Bu nedenle, pencereyi yeniden boyutlandırmaya çalışmıyor. Basit bir çalışma, paketin çerçeveyi yeniden boyutlandırmasına neden olmak için pencereye küçük bir 1x1 çerçeveyi geçici olarak yerleştirmektir. –

+0

Tamam, çok teşekkür ederim! –