Как объединить панель навигации и несколько экранов в KivyMD (Python)?
Я новичок в программировании, и я хочу создать мобильное приложение, которое содержит панель инструментов с навигационным ящиком и которое должно выводить пользователя на разные экраны в приложении. Я много искал решение, но не нашел его, потому что иногда весь код находится в файле .kv, поэтому трудно обрабатывать переменные и печатать их, например, как в этом коде:
Как переключаться между экранами в NavigationDrawer с помощью KivyMD
Я попытался объединить его с этим кодом, который использует только Kivy вместо KivyMD, но мне это не удалось, потому что это не совсем для мобильных приложений:
https://www.techwithtim.net/tutorials/kivy-tutorial/multiple-screens/
Я надеюсь, что кто-то может мне помочь. Спасибо!
1 ответ
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
KV = '''
<ContentNavigationDrawer>:
ScrollView:
MDList:
OneLineListItem:
text: "Screen 1"
on_press:
root.nav_drawer.set_state("close")
root.screen_manager.current = "scr 1"
OneLineListItem:
text: "Screen 2"
on_press:
root.nav_drawer.set_state("close")
root.screen_manager.current = "scr 2"
Screen:
MDToolbar:
id: toolbar
pos_hint: {"top": 1}
elevation: 10
title: "MDNavigationDrawer"
left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]
MDNavigationLayout:
x: toolbar.height
ScreenManager:
id: screen_manager
Screen:
name: "scr 1"
MDLabel:
text: "Screen 1"
halign: "center"
Screen:
name: "scr 2"
MDLabel:
text: "Screen 2"
halign: "center"
MDNavigationDrawer:
id: nav_drawer
ContentNavigationDrawer:
screen_manager: screen_manager
nav_drawer: nav_drawer
'''
class ContentNavigationDrawer(BoxLayout):
screen_manager = ObjectProperty()
nav_drawer = ObjectProperty()
class TestNavigationDrawer(MDApp):
def build(self):
return Builder.load_string(KV)
TestNavigationDrawer().run()