У меня есть вопрос, касающийся Kivy и использования виджетов:
Я создаю динамический c пользовательский интерфейс, и поэтому мне нужно добавлять / удалять виджеты из макетов. Для этого мне нужно запустить метод виджета из другого виджета в Python. Причина в том, что изменения, например, в layout1, приводят к изменениям в layout2.
(очень простой, не очень работающий) пример:
main.py
class Tab(TabbedPanel):
pass
class App(App):
def build(self):
return Tab()
if __name__ == '__main__':
App().run()
app.kv
#:kivy 1.11.1
<Tab>:
layout1: layout1
layout2: layout2
TabbedPanelItem:
text: 'text'
Layout1:
id: layout1
Layout2:
id: layout2
<Layout1>:
id: layout1
Label:
text: 'layout1'
<Layout2>:
id: layout2
Label:
text: 'layout2'
Layout1.py
class Layout1(Label):
def call_layout2(self):
layout2.some_method() # How to do this? How to access another widget's method at runtime?
Layout2.py
class Layout2(Label):
def some_method(self):
do_something_inside_this_layout() # ToDo
Насколько я понимаю, должно быть решение путем доступа к другому виджет через id
. Я попробовал через self.root.ids
, но это не сработало ..