首页 > 解决方案 > 在 kivy 中一起使用底部导航栏和屏幕管理器

问题描述

我会在 kivy 中为我的应用程序使用底部导航栏。不幸的是我做不到。你能帮我吗?

该应用程序仅向我显示名为“PresenzeScreen”的屏幕,但我也会看到底部导航栏。谢谢!

# Here I declare the classes of the screens

    class Manager(ScreenManager):
            presenze = ObjectProperty(None)
    
    
    class PresenzeScreen(Screen):
            def switch(self):
                    self.parent.current = 'presenze'
    sm = Manager()
    sm.add_widget(PresenzeScreen( name ='presenze'))


# Here I write the bottom navigation bar

KV = """
Screen:
        MDBottomNavigation:
                panel_color: .2, .2, .2, 1
                MDBottomNavigationItem:
                        name: 'screen 1'
                        text: 'Presenze'
                        on_enter: root.switch()

                       
                                        

                MDBottomNavigationItem:
                        name: 'screen 2'
                        text: 'Test'
                                        

                        MDLabel:
                                text: 'Qua ci sono i test'
                                halign: 'center'

                MDBottomNavigationItem:
                        name: 'screen 3'
                        text: 'Orari'
                                        
                                        
                        MDLabel:
                                text: 'Qua ci sono gli orari degli allenamenti'
                                halign: 'center'

# And here the screen manager

<PresenzeScreen>:
        MDLabel:
                text: 'Ci sei riuscito finalmente'
                haling: 'center'
<Manager>:
        id: screen_manager
        
                
        presenze: presenze 
                
        PresenzeScreen:
                id: presenze
                name: 'presenze'
                manager: screen_manager
       
"""

class MainApp(MDApp):
        
        dialog = None
        def build(self):
               Builder.load_string(KV)
               return Manager()
        
       
MainApp().run()

标签: pythonkivykivy-language

解决方案


您需要像这样编辑您的 .kv 文件:

KV = """
<PresenzeScreen>:
        MDBottomNavigation:
                panel_color: .2, .2, .2, 1
                MDBottomNavigationItem:
                        name: 'screen 1'
                        text: 'Presenze'
                        on_enter: root.switch()     
                        MDLabel:
                                text: 'Ci sei riuscito finalmente'
                                haling: 'center'                   
                MDBottomNavigationItem:
                        name: 'screen 2'
                        text: 'Test'
                        MDLabel:
                                text: 'Qua ci sono i test'
                                halign: 'center'
                MDBottomNavigationItem:
                        name: 'screen 3'
                        text: 'Orari'
                        MDLabel:
                                text: 'Qua ci sono gli orari degli allenamenti'
                                halign: 'center'
<Manager>:
        id: screen_manager
        presenze: presenze 
        PresenzeScreen:
                id: presenze
                name: 'presenze'
                manager: screen_manager
"""

推荐阅读