У меня есть эта последовательность идентификаторов .
self.ids.cuarta_pantalla.ids.container.ids.pre_1.ids.Si
В этом случае контейнер имеет 70 различных идентификаторов [от pre_1 до pre_70 ] и каждый pre_ (x) имеет три разных идентификатора [ Si , MasMenos , No ], которые соответствует группе CheckBoxes .
Если я хочу узнать состояние одного флажка, используя его атрибут значение , я вынужден написать все утверждение вот так.
self.ids.cuarta_pantalla.ids.container.ids.pre_1.ids.Si.value
.
Итак, как я могу перебрать идентификаторы?
Я пытался использовать квадратные скобки self.ids.cuarta_pantalla.ids.container.ids['pre_1']
, но он возвращает то, что я не могу вызвать метод.
Печать в квадратных скобках: <weakref at 0x125F7118; to 'BoxLayout' at 0x125F30D0>
Печать с точечной нотацией: <kivy.uix.boxlayout.BoxLayout object at 0x125F30D0>
Вот как я создал объекты:
for idx in range(70):
BoxContainer = BoxLayout()
# Repeat this two more times with MasMenos and No
check1 = CheckBox(group= f"p_{idx+1}")
BoxContainer.add_widget(check1)
BoxContainer.ids['Si'] = weakref.ref(check1)
#Adding the BoxContainer with CheckBoxes to the container
self.ids.cuarta_pantalla.ids.container.add_widget(BoxContainer)
self.ids.cuarta_pantalla.ids.container.ids[f'pre_{idx+1}'] = weakref.ref(BoxContainer)