在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()
但我继续在我的horizontal_sizer上收到错误AttributeError: 'SizerItem' object has no attribute 'GetChildren'
。
答案 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()