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

1 投票
2 回答
746 浏览
提问于 2025-04-16 18:23

我有一个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

你有没有试过一些特别难看的方法,比如:

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

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。为了帮助大家更好地理解这些问题,很多人会在网上提问,比如在StackOverflow上。

在这些讨论中,大家会分享自己的经验和解决方案。有些人会提供代码示例,帮助其他人更直观地理解问题的解决方法。这些代码块通常用类似

for control in self.GetChildren():
    if isinstance(control, wx.CheckBox):
        control.SetValue(False)
这样的格式表示,方便大家找到相关的代码。

总之,编程的学习过程就是不断提问和寻找答案的过程。通过与他人的交流,我们可以更快地掌握知识,解决遇到的困难。

撰写回答