Как изменить свойство класса из другого класса - PullRequest
0 голосов
/ 09 декабря 2018

Я новичок в Kivy и столкнулся с проблемой.У меня есть класс «MainPanel», который содержит четыре класса «Навигация», «Изображения», «Конфиг» и «Информация».Я хочу, чтобы при нажатии кнопки в классе «Навигация» текущий экран изменялся с помощью диспетчера экрана в классе «Информация».

Вот мой код: Main.py:

class Navigation(FloatLayout):
    pass

class Information(ScreenManager):
    pass

class SlothFacts(Screen):
    pass

class KiwiFacts(Screen):
    pass

class MainPanel(GridLayout):
    pass

Builder.load_file("mainPanel.kv")

class Complex(App):
    def build(self):
        return MainPanel()

if __name__ == "__main__":
    Complex().run()

mainPanel.kv:

#:include navigation.kv
#:include images.kv
#:include config.kv
#:include information.kv

<MainPanel>:
    cols:2
    Navigation:
    Images:
    Config:
    Information:

Navigation.kv:

<Navigation>:
    Button:
        text:"Kiwi"
        size_hint:(.3, .2)
        pos_hint:{'x':.1, 'y':.25}
        #on_press: <--- Change screen to kiwi in Information class

Information.kv:

#: import  FadeTransition kivy.uix.screenmanager.FadeTransition

<Information>
    transition: FadeTransition()
    SlothFacts:
    KiwiFacts:

<SlothFacts>:
    name: "sloth"
    Label:
        text:"im sloth"

<KiwiFacts>:
    name: "kiwi"
    Label:
        text:"im kiwi"

1 Ответ

0 голосов
/ 09 декабря 2018

Добавьте id к вашему ScreenManager в файле mainPanel.kv, например:

#:include navigation.kv
#:include images.kv
#:include config.kv
#:include information.kv

<MainPanel>:
    cols:2
    Navigation:
    Images:
    Config:
    Information:
        id: screenManager

Затем используйте его в своем файле Navigation.kv:

<Navigation>:
    Button:
        text:"Kiwi"
        size_hint:(.3, .2)
        pos_hint:{'x':.1, 'y':.25}
        #on_press: <--- Change screen to kiwi in Information class
        on_press: app.root.ids.screenManager.current='kiwi'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...