#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