Reputation: 83
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
Reputation: 1325
MyLayout:
scr_mngr: scr_mngr
Or
def change_screen(self, screen, *args):
self.root.ids.scr_mngr.current = screen
Upvotes: 1