从 kivymd 工具栏更改屏幕
changing screen from kivymd toolbar
我想从 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()
和我的 .kv 文件
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"
不知怎的,这不起作用。如果我尝试在 change_screen() 函数中打印出一些东西,效果很好。
有什么建议么?提前致谢。
MyLayout:
scr_mngr: scr_mngr
或者
def change_screen(self, screen, *args):
self.root.ids.scr_mngr.current = screen
我想从 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()
和我的 .kv 文件
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"
不知怎的,这不起作用。如果我尝试在 change_screen() 函数中打印出一些东西,效果很好。 有什么建议么?提前致谢。
MyLayout:
scr_mngr: scr_mngr
或者
def change_screen(self, screen, *args):
self.root.ids.scr_mngr.current = screen