我有一个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循环中执行此操作?
您可以使用以下方法遍历包含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()