Есть ли способ получить доступ к свойствам (переменным класса) с другого экрана?

Я использую kivy, и у меня есть два экрана, один из которых имеет переменные класса, которые являются числовыми свойствами, и у меня есть методы, которые изменяют значение в зависимости от ситуации. Второй экран следует использовать для отображения окончательных значений пользователю.

class Main(Screen):
    transport_price_value = NumericProperty(0)

    def change_value_on_press(self):
        self.transport_price_value += 10


class Second(Screen):
     def display_transport_price_value(self):
         return str(Main.transport_price_value)


class WindowManager(ScreenManager):
     pass


class Example(App):
     pass

Когда я нажимаю кнопку отправки, которая запускает функцию «display_transport_price_value», она возвращает имя вместо значения свойства.

Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
17
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку Main — это просто class, а не instance, и поскольку в python можно иметь несколько экземпляров, вам действительно нужен способ получить экземпляр Main, созданный kivy. Я не проверял, но думаю, что это сработает:

class Main(Screen):
    transport_price_value = NumericProperty(0)

    def change_value_on_press(self):
        self.transport_price_value += 10


class Second(Screen):
     def display_transport_price_value(self):
         main_screen = self.manager.get_screen("main")
         return str(main_screen.transport_price_value)


class WindowManager(ScreenManager):
     pass


class Example(App):
     pass

Источник: https://stackoverflow.com/a/61002677/13314450

Другие вопросы по теме