Как перебрать все экземпляры wx.CheckBox? - PullRequest
1 голос
/ 26 мая 2011

У меня есть фрейм 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 ]

5 голосов
/ 26 мая 2011
for control in self.GetChildren():
    if isinstance(control, wx.CheckBox):
        control.SetValue(False)
0 голосов
/ 26 мая 2011

Вы пробовали что-то супер уродливое, как:

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