从 kivymd 工具栏更改屏幕

Posted

技术标签:

【中文标题】从 kivymd 工具栏更改屏幕【英文标题】:changing screen from kivymd toolbar 【发布时间】:2021-05-21 01:01:45 【问题描述】:

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

【问题讨论】:

【参考方案1】:
MyLayout:
    scr_mngr: scr_mngr

或者

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

【讨论】:

以上是关于从 kivymd 工具栏更改屏幕的主要内容,如果未能解决你的问题,请参考以下文章

如何在每个屏幕上保留一个 kivymd 工具栏?

如何使用 KivyMD 工具栏切换屏幕

如何在 KivyMD (Python) 中结合导航抽屉和多个屏幕?

在kivymd中更改屏幕之间的过渡

使用按钮更改 kivy 或 kivymd 中的屏幕

在 KivyMD Python 中更改开始屏幕时,如何在启动时显示或关闭消息?