KivyMD icon indicating copy to clipboard operation
KivyMD copied to clipboard

It is not possible to use MDNavigationRailItem in python code

Open bibibo-77 opened this issue 3 years ago • 1 comments

Hello, I try to use MDNavigationRailItem in Python code = it means without KV language but it is not possible. A lot of errors appear. If i use the code without MDNavigationRailItem class everything works fine.

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 geocoder.api import elevation

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())        
        boxlayout2.add_widget(navigationrail)
        
        return boxlayout1

root = MyApp()
root.run()

Versions

  • OS: macOS 11.2.2
  • Python: 3.7.6
  • Kivy: 2.0.0
  • KivyMD: 0.104.2.dev0

bibibo-77 avatar Mar 05 '21 19:03 bibibo-77

Try this

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

alex-conanec avatar Apr 08 '21 15:04 alex-conanec

Fix in master branch.

HeaTTheatR avatar Aug 26 '22 06:08 HeaTTheatR