как вернуться на главный экран с помощью MDToolbar?

у меня есть два Screen. В первом нажимая на кнопку нас переносит на другой Screen, как я могу вернутся со второго Screen на первый используя MDToolbar? ( желательно с иконкой " назад"),( можно ли тоже самое сделать только используя свайп по экрану ?)

from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivymd.app import MDApp
from kivy.uix.button import Button
from kivy.uix.popup import Popup

KV = """
#:import NoTransition kivy.uix.screenmanager.NoTransition

ScreenManager: 
    Screen:
        name: 'Screen one'  # имя экрана
        BoxLayout:
            orientation: 'vertical' 

            MDToolbar:
                title: "eBook"
                elevation: 10
                md_bg_color: app.theme_cls.primary_color
                left_action_items: [["menu", lambda x: app.callback()]]
                pos_hint: {"top": 1}
                md_bg_color: app.theme_cls.accent_color

            BoxLayout:
                size_hint_y: None
                height: dp(45)
                MDFlatButton: 
                    text: 'Chosen subject' 
                    size_hint: 1, 1 
                    on_press:
                        root.current = 'Chosen subject'  # смена экрана



    Screen:
        name: 'Chosen subject'  # имя экрана
        BoxLayout:
            orientation: 'vertical' 
            MDToolbar:
                title: "eBook"
                elevation: 10
                md_bg_color: app.theme_cls.primary_color
                left_action_items: [["menu", lambda x: app.callback()]]
                pos_hint: {"top": 1}
                md_bg_color: app.theme_cls.accent_color



    """


class HelloWorld(MDApp):
    def build(self):
        return Builder.load_string(KV)


HelloWorld().run()

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

Автор решения: Xyanight

Подержи мое пиво...

from kivy.lang import Builder

from kivymd.app import MDApp

KV = """
MDBoxLayout:
    orientation: "vertical"

    MDToolbar:
        id: toolbar
        title: "eBook"
        elevation: 10
        left_action_items: [["menu", lambda x: x]]

    Carousel:
        id: carousel
        on_current_slide: app.on_current_slide(*args)

        Screen:
            name: "screen 1"

            MDFlatButton: 
                text: 'Screen 1' 
                on_release: carousel.load_next()
                pos_hint: {"center_x": .5, "center_y": .5}

        Screen:
            name: "screen 2"

            MDFlatButton: 
                text: 'Screen 2' 
                pos_hint: {"center_x": .5, "center_y": .5}            
"""


class Test(MDApp):
    def build(self):
        self.root = Builder.load_string(KV)

    def on_current_slide(self, instance_carousel, instance_screen):
        if instance_screen.name == "screen 2":
            self.root.ids.toolbar.left_action_items = [["arrow-left", lambda x: self.set_previous_screen()]]
        else:
            self.set_toolbar_button()

    def set_toolbar_button(self):
        self.root.ids.toolbar.left_action_items = [["menu", lambda x: x]]

    def set_previous_screen(self):
        self.root.ids.carousel.load_previous()
        self.set_toolbar_button()


Test().run()
→ Ссылка