如何遍历所有wx.CheckBox实例?

时间:2011-05-26 14:42:18

标签: python wxpython wxwidgets

我有一个wx框架,我有很多复选框。用户经常在下拉菜单(wx.ComboBox)中更改设置时,我想清除所有复选框。目前,我已经实现了一个方法,当ComboBox发生更改时会调用它并手动清除每个复选框,即:

def ClearCheckBoxes(self):
    self.cb_EnableControl.SetValue(0)
    self.cb_EnableRun.SetValue(0)
    self.cb_EnablePower.SetValue(0)
    ...
    ...

虽然我只有大约10个,但如果是这样的话,我的ClearCheckBoxes方法会更清晰:

def ClearCheckBoxes(self):
    for CheckBox in self.AllCheckBoxes:
        CheckBox.SetValue(0)

另外,我想我可以创建一个列表(即AllCheckBoxes)并在创建列表时将所有复选框添加到列表中,然后只需迭代列表即可。但这里的重点是,我想知道是否有预定义的方法来做到这一点。

由于

2 个答案:

答案 0 :(得分:5)

for control in self.GetChildren():
    if isinstance(control, wx.CheckBox):
        control.SetValue(False)

答案 1 :(得分:0)

你有没有尝试过像丑陋的东西:

[checkbox.SetValue(0) for checkbox in dir(self) where type(checkbox) == type(wx.Checkbox)]