首页 > 解决方案 > 从 kivymd 工具栏更改屏幕

问题描述

我想从 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() 函数中打印出一些东西,那效果很好。有什么建议么?提前致谢。

标签: pythonkivykivymd

解决方案


MyLayout:
    scr_mngr: scr_mngr

或者

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

推荐阅读