如何删除所有子元素?

Rom*_*kin 14 python user-interface tkinter

我正在使用Python的tkinter库编写基于GUI的程序.我遇到了一个问题:我需要删除所有子元素(不删除父元素,在我的例子中colorsFrame).

我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

我该如何实现这一目标?

Bry*_*ley 22

您可以使用winfo_children获取特定窗口小部件的所有子窗口列表,然后可以迭代:

for child in infoFrame.winfo_children():
    child.destroy()
Run Code Online (Sandbox Code Playgroud)

  • @RomanNazarkin:简短的回答是这样的:当你销毁所有儿童小部件时,包装不再认为它"拥有"窗口,因为没有孩子可以管理.因此,它不会尝试调整窗口大小.一个简单的解决方法是暂时在窗口中打包一个小的1x1帧,以使包调整包含帧的大小. (2认同)