Reputation: 21
I would use a bottom navigation bar for my app in kivy. Unfortunately I'm not able. Can you help me out?
The app shows me only the screen named "PresenzeScreen", but I would also see the Bottom Navigation Bar. Thanks!
# 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()
Upvotes: 1
Views: 1487
Reputation: 1
You can use this template to create many 'Bottom Navigation Bars' and 'Screen Manager' to switch between them:
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import StringProperty, ObjectProperty
KV = """
<Screen_1>:
MDBottomNavigation:
panel_color: .2, .2, .2, 1
MDBottomNavigationItem:
name: 'screen 1'
text: 'Scr1 Tab1'
# on_enter: root.switch()
MDLabel:
text: 'Screen_1 Tab_1'
halign: 'center'
MDBottomNavigationItem:
name: 'screen 2'
text: 'Scr1 Tab2'
on_enter: root.switch()
MDLabel:
text: 'Screen_1 Tab_2 -> Go to Screen_2'
halign: 'center'
MDBottomNavigationItem:
name: 'screen 3'
text: 'Scr1 Tab3'
MDLabel:
text: 'Screen_1 Tab_3'
halign: 'center'
<Screen_2>:
MDBottomNavigation:
panel_color: .8, .8, .8, 1
MDBottomNavigationItem:
name: 'screen 1'
text: 'Scr2 Tab1'
# on_enter: root.switch()
MDLabel:
text: 'Screen_2 Tab_1'
halign: 'center'
MDBottomNavigationItem:
name: 'screen 2'
text: 'Scr2 Tab2'
on_enter: root.switch()
MDLabel:
text: 'Screen_2 Tab_2 -> Go to Screen_1'
halign: 'center'
# <Manager>:
# id: screen_manager
# screen_1: screen_1
# screen_2: screen_2
#
# Screen_1:
# id: screen_1
# name: 'screen_1'
# manager: screen_manager
# Screen_2:
# id: screen_2
# name: 'screen_2'
# manager: screen_manager
"""
class Screen_1(Screen):
def switch(self):
self.parent.current = 'screen_2'
class Screen_2(Screen):
def switch(self):
self.parent.current = 'screen_1'
class Manager(ScreenManager):
# screen_1 = ObjectProperty(None)
# screen_2 = ObjectProperty(None)
pass
class MainApp(MDApp):
# dialog = None
def build(self):
Builder.load_string(KV)
sm = Manager()
sm.add_widget(Screen_1(name='screen_1'))
sm.add_widget(Screen_2(name='screen_2'))
sm.current = 'screen_2'
return sm
MainApp().run()
Upvotes: 0
Reputation: 292
You need to ediot your .kv file like that:
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
"""
Upvotes: 1