【问题标题】:How do I iterate through all wx.CheckBox instances?如何遍历所有 wx.CheckBox 实例?
【发布时间】:2011-05-26 14:42:18
【问题描述】:

我有一个 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)并在创建它们时将所有复选框添加到列表中,然后只需遍历列表即可。但这里的重点是,我想知道是否有预定义的方式来执行此操作。

谢谢

【问题讨论】:

    标签: python wxpython wxwidgets


    【解决方案1】:
    for control in self.GetChildren():
        if isinstance(control, wx.CheckBox):
            control.SetValue(False)
    

    【讨论】:

    • 谢谢@lacks。我尝试了您上面提到的内容,但收到以下错误:TypeError: 'WindowList' object is not callable on the self.Children() call
    【解决方案2】:

    你有没有尝试过一些超级丑陋的东西:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-17
      • 2011-06-06
      • 2018-08-22
      • 2010-11-17
      • 1970-01-01
      • 2016-06-07
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多