在wxpython

时间:2017-11-22 12:14:20

标签: wxpython

在wxpython中你不能禁用/启用sizer及其项目,所以我决定循环遍历sizer并逐个禁用它们。

我的面板如下所示:

vertical_sizer
├── horizontal_sizer_1
│   └── dynamic_created_elements
└── horizontal_sizer_2
    └── dynamic_created_elements

因为我的项目是动态创建的,所以我不知道里面会有多少元素或类型元素,所以不能通过它们的id来实现。 所以我打算使用这段代码:

for horizontal_sizer in self.my_sizer.GetChildren():
    for element in horizontal_sizer.GetChildren():
        element.Enable()

但我继续在我的horizo​​ntal_sizer上收到错误AttributeError: 'SizerItem' object has no attribute 'GetChildren'

1 个答案:

答案 0 :(得分:1)

您应该尝试在GetWindow()项目上调用horizontal_sizer并打印出来,以确定它是None还是您不期待的小部件。我怀疑你的垂直分级器中有另一个小部件,而不是分级器。

或者你可以使用Python的hasattr来确定子项是否有GetChildren()作为方法,如果没有,只需跳过它:

for horizontal_sizer in self.my_sizer.GetChildren():
    if hasattr(horizontal_sizer, 'GetChildren'):
        for element in horizontal_sizer.GetChildren():
            element.Enable()