我有一个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
)并在创建列表时将所有复选框添加到列表中,然后只需迭代列表即可。但这里的重点是,我想知道是否有预定义的方法来做到这一点。
由于
答案 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)]