简体   繁体   中英

How to use MDNavigationRail + MDNavigationRailItem without KV language

How can I create MDNavigationRail without KV language? I tried this code but I get a lot of errors.

class MyApp(MDApp):
    
    def build(self):
        
        boxlayout1 = MDBoxLayout(orientation = "vertical")
        toolbar = MDToolbar(title = "Hello")
        boxlayout1.add_widget(toolbar)
        boxlayout2 = MDBoxLayout()
        boxlayout1.add_widget(boxlayout2)
        
        from kivymd.uix.navigationrail import MDNavigationRail, MDNavigationRailItem
        navigationrail = MDNavigationRail()
      
        navigationrail.add_widget(MDNavigationRailItem(icon="access-point"))
        boxlayout2.add_widget(navigationrail)
        
        
        return boxlayout1

root = MyApp()
root.run()

You have to pass your object navigationrail as an argument of MDNavigationRailItem.

from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.floatlayout import MDFloatLayout
from kivymd.uix.toolbar import MDToolbar
from kivy.utils import get_color_from_hex 

class MyApp(MDApp):
    def build(self):
        boxlayout1 = MDBoxLayout(orientation = "vertical")
        toolbar = MDToolbar(title = "Hello")
        boxlayout1.add_widget(toolbar)
        boxlayout2 = MDBoxLayout()
        boxlayout1.add_widget(boxlayout2)
        
        from kivymd.uix.navigationrail import MDNavigationRail, MDNavigationRailItem
        navigationrail = MDNavigationRail(
                md_bg_color = get_color_from_hex("#344954"),
                # color_normal = get_color_from_hex("#718089"), #crash the app when clicking on an item, don't understand why...
                color_active = get_color_from_hex("#f3ab44"),
                visible = "Persistent")
        for i in range(3):
            item = MDNavigationRailItem(navigation_rail = navigationrail, text="item%d" %(i+1))
            navigationrail.add_widget(item)        
        boxlayout2.add_widget(navigationrail)
        
        return boxlayout1

root = MyApp()
root.run()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM