2011-05-26 93 views
1

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

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)和所有复选框添加到列表中,我创建它们,那就只能是一个问题遍历列表。但是,这里要说的是,我想知道是否有预先定义的方式来做到这一点。

感谢

回答

0

你试过超级难看是这样的:

[checkbox.SetValue(0) for checkbox in dir(self) where type(checkbox) == type(wx.Checkbox)] 
5
for control in self.GetChildren(): 
    if isinstance(control, wx.CheckBox): 
     control.SetValue(False) 
+0

感谢@lacks。我试过你上面提到的,但得到以下错误:'TypeError:'WindowList'对象不可调用'self.Children()调用 – jairo 2011-05-27 12:53:45

+0

你有这个工作吗?如果不是,什么是自我? – Iacks 2011-05-31 10:59:30