David Green
David Green

Reputation: 83

changing screen from kivymd toolbar

I wanted to change the screen from MDToolbar.

from kivy.properties import BooleanProperty, ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivymd.app import MDApp
from kivy.core.window import Window

Window.size = (300, 500)

class MyLayout(BoxLayout):
    scr_mngr = ObjectProperty(None)

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

class MenuOSApp(MDApp):
    def on_start(self):
        pass

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

and my .kv file

MyLayout:
    orientation: "vertical"
    MDBottomAppBar:
        MDToolbar:
            icon: "basket"
            type: "bottom"
            left_action_items: [["food", lambda x: root.change_screen('screen1') ], ["coffee", lambda x:root.change_screen('screen2')]]
            mode: "free-end"
        ScreenManager:
            id: scr_mngr
            Screen:
                name: 'screen1'
                MDToolbar:
                    title: "Screen 1"
            Screen:
                name: 'screen2'
                MDToolbar:
                    title: "Screen 2"

Somehow this doesnt work. If i try to print out something in change_screen() function, that works fine. Any suggestions? Thanks in advance.

Upvotes: 1

Views: 407

Answers (1)

Xyanight
Xyanight

Reputation: 1325

MyLayout:
    scr_mngr: scr_mngr

Or

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

Upvotes: 1

Related Questions