如何清除所有大小调整器中的所有小部件?

问题描述 投票:0回答:1

我有一个GUI(使用wxPython创建),其中包含很多TextCtrl和一些ComboBox。它们分布在不同的大小调整器上。

此刻,我正在为我拥有的所有分级机执行此操作:

    children = self.hbox.GetChildren() 
    for child in children:
        widget = child.GetWindow()
        if isinstance(widget, wx.TextCtrl):
            widget.Clear() 
        if isinstance(widget, wx.ComboBox):
            widget.SetValue("")  

是否有一种方法可以获取一个类的所有Sizer,然后在for循环中执行此操作?

python python-3.x wxpython
1个回答
0
投票

您可以使用以下方法遍历包含Window而不是Sizer的所有子级wx.Window.GetChildren。当然,只有在您拥有扁平结构的情况下才能使用,而我想您不会。因此,您可以递归执行此操作:

def clean_up(window):
    if isinstance(window, TextCtrl):
        window.Clear()
    for i in window.GetChildren():
        clean_up(i)

顺便说一句,ComboBox和TextCtrl都是TextEntry的祖先,因此您可以:

if isinstance(window, TextEntry):
    window.Clear()
© www.soinside.com 2019 - 2024. All rights reserved.