Помогите получить результат работы метода из одного Screen в другом Screen. Kivy

Помогите пожалуйста, я только изучаю Python, я пишу учебную программу с использованием kivy. Я никак не могу заставить работать метод одного класса Screen в другом Screen. В экране CoffeeWindow, после нажатия на любую из двух кнопок метод count() добавляет в список tup цифру соответствующую цифре с кнопки. Мне нужно показать содержимое списка на другом SumMenu Screen, чего я никак не могу добиться, если кто-то может, пожалуйста покажите, как это должно работать. Я пробовал расставлять id, использовать ObjectProperty, использовать ids, ничего не работает, очевидно, что я делаю что-то не правильно. Заранее благодарен!

main.py:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


class SumMenu(Screen):
    pass


class CoffeeWindow(Screen):

    tup = []
    def count(self, num):
        self.tup.append(num)

        self.pos1 = self.tup.count(1)
        self.pos2 = self.tup.count(2)


class WindowManager(ScreenManager):
    pass


kv = Builder.load_file('my.kv')


class MainApp(App):

    def build(self):
        return kv


if __name__ == '__main__':
    MainApp().run()

my.kv:

<CoffeeButton@Button>:
    font_size: "23sp"
    size_hint: 0.5, 0.12
    bold: True
    #text: "cof"


<HorizBoxLayout@BoxLayout>:
    padding: 30
    spacing: 25
    orientation: "horizontal"




WindowManager:
    CoffeeWindow:
    SumMenu:



<SumMenu>:
    name: "summenu"

    BoxLayout:
        pos_hint: {'center_x' : 0.5, 'center_y' : 0.6}

        Label:
            text: "position1 = #тут нужно показать содержимое переменной pos1"
    
    BoxLayout:
        pos_hint: {'center_x' : 0.5, 'center_y' : 0.5}

        Label:
            text: "position2 = #тут нужно показать содержимое переменной pos2"

    HorizBoxLayout:

        Button:
            size_hint: 1, 0.1
            font_size: "18sp"
            pos_hint: {'center_x' : 0.5, 'y' : 0}
            text: "Go to Coffee"
            bold: True
            on_release:
                app.root.current = "coffee"
                app.root.transition.direction = "right"



<CoffeeWindow>:
    name: "coffee"

    GridLayout:
        rows: 3
        size_hint: 1, 0.8
        pos_hint: {'center_x' : 0.5, 'top' : 0.95}
        padding: 40
        spacing: 40

        CoffeeButton:
            text: "position 1"
            on_release:
                root.count(1)

        CoffeeButton:
            text: "position 2"
            on_release:
                root.count(2)


        Button:
            size_hint: 0.5, 0.1
            font_size: "18sp"
            pos_hint: {'right' : 0.5, 'y' : 0}
            text: "Show Menu"
            on_release:
                app.root.current = "summenu"

Ответы (1 шт):

Автор решения: 6 crimes

Прежде всего необходимо провести работу с файлом "my.kv":

  • Добавить в WindowManager для каждого окна id, для того, чтобы получить доступ к Screen из manager.

     WindowManager:
         CoffeeWindow:
             id: coffee
         SumMenu:
             id: summenu
    
  • Добавить id каждому элементу "Label" класса SumMenu.

    <SumMenu>:
        name: "summenu"
    
        BoxLayout:
            pos_hint: {'center_x' : 0.5, 'center_y' : 0.6}
    
            Label:
                id: label1
    
        BoxLayout:
            pos_hint: {'center_x' : 0.5, 'center_y' : 0.5}
    
            Label:
                id: label2
    

После чего в main.py дополнить класс SumMenu(Screen):

class SumMenu(Screen):
    def on_enter(self, *args):
        self.ids.label1.text = f"position1 = {self.manager.ids.coffee.pos1}"
        self.ids.label2.text = f"position2 = {self.manager.ids.coffee.pos2}"
→ Ссылка