Доступ к методу виджетов Kivy из другого класса виджетов в python - PullRequest
0 голосов
/ 10 января 2020

У меня есть вопрос, касающийся 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, но это не сработало ..

...