Как получить доступ к переменным с разных экранов в python kivy?

#python #kivy

Вопрос:

Как указано в заголовке, я хотел бы выяснить, как я мог бы получить свойство объекта с 1 экрана на другой. У меня есть один экран, на котором есть свойство объекта, но я, похоже, не могу найти способ доступа к этому свойству объекта на другом экране/классе. Например:

 class windowOne(Screen):
    myVar = ObjectProperty("Hello")
    pass
class windowTwo(Screen):
    pass
 

Я хотел бы получить доступ к myVar в windowTwo.
Есть какие-нибудь идеи? У меня есть мой полный код, если вы хотите, чтобы я его опубликовал.

Ответ №1:

Чтобы получить доступ к переменной windowOne , вам сначала нужна ссылка на экземпляр windowOne , который находится в вашем App . Как правило, вы получаете эту ссылку от ScreenManager .

Если вы обращаетесь к нему из другого метода Screen , вы можете получить ссылку на ScreenManager следующее:

 screen_manager = self.manager
 

Если вы не находитесь в методе другого Screen , вы часто можете получить ссылку на ScreenManager as:

 screen_manager = App.get_running_app().root
 

Вышесказанное предполагает, что ScreenManager это корневой виджет App .

Как только у вас есть ScreenManager , вы можете использовать get_screen() метод, чтобы получить ссылку на windowOne :

 window_one = screen_manager.get_screen('Name of WindowOne Screen')
 

где Name of WindowOne Screen находится имя, которое вы присваиваете WindowOne Screen .

И, наконец, доступ к myVar переменной осуществляется:

 window_one.myVar