Screen Manager

Introducción

El objetivo es poder representar dos contenidos y mostrar uno y otro a voluntad.

Un ejemplo sencillo (aunque lo complica un poco el hecho de usar Toolbars en lugar de botones) es:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivymd.theming import ThemeManager
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout

class MyLayout(BoxLayout):

    scr_mngr = ObjectProperty(None)

    def change_screen(self, screen, *args):
        self.scr_mngr.current = screen

main_widget_kv = '''
#:import Toolbar kivymd.toolbar.Toolbar
#:import partial functools.partial

MyLayout:
    orientation: 'vertical'
    scr_mngr: scr_mngr
    Toolbar:
        id: toolbar
        title: 'My Toolbar'
        md_bg_color: app.theme_cls.primary_color
        background_palette: 'Primary'
        background_hue: '500'
        left_action_items: [['arrow-left',  partial(root.change_screen, 'screen1') ]]
        right_action_items: [['arrow-right',  partial(root.change_screen, 'screen2') ]]
    ScreenManager:
        id: scr_mngr
        Screen:
            name: 'screen1'
            Toolbar:
                title: "Screen 1"
        Screen:
            name: 'screen2'
            Toolbar:
                title: "Screen 2"
'''

class KitchenSink(App):
    theme_cls = ThemeManager()
    title = "My kivy app"

    def build(self):
        main_widget = Builder.load_string(main_widget_kv)
        # self.theme_cls.theme_style = 'Dark'
        print(self.root)
        return main_widget

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