如何在没有 KV 语言的情况下使用 MDNavigationRail + MDNavigationRailItem

时间:2021-03-04 21:54:50

标签: python kivymd

如何在没有 KV 语言的情况下创建 MDNavigationRail?我试过这段代码,但出现了很多错误。

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()

1 个答案:

答案 0 :(得分:0)

您必须将对象导航轨道作为 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()