Другой способ - просто удалить метод on_start () из класса TestNavigationDrawer () и записать код в файл .kv ScrollView для переключения с одной страницы на другую. Я только начал изучать, поэтому мой код может быть неоптимальным, но он полностью соответствует упомянутому вопросу. т.е. я вставляю полный код
, используйте образец кода, как указано ниже:
main.py
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
from kivymd.theming import ThemableBehavior
from kivymd.uix.list import OneLineIconListItem, MDList
from kivymd.theming import ThemeManager
class ContentNavigationDrawer(BoxLayout):
screen_manager = ObjectProperty()
nav_drawer = ObjectProperty()
class DrawerList(ThemableBehavior, MDList):
def set_color_item(self, instance_item):
'''Called when tap on a menu item.'''
# Set the color of the icon and text for the menu item.
for item in self.children:
if item.text_color == self.theme_cls.primary_color:
item.text_color = self.theme_cls.text_color
break
instance_item.text_color = self.theme_cls.primary_color
class ItemDrawer(OneLineIconListItem):
icon = StringProperty()
class DrawerList(ThemableBehavior, MDList):
def set_color_item(self, instance_item):
"""Called when tap on a menu item."""
# Set the color of the icon and text for the menu item.
for item in self.children:
if item.text_color == self.theme_cls.primary_color:
item.text_color = self.theme_cls.text_color
break
instance_item.text_color = self.theme_cls.primary_color
#GUI = Builder.load_file(r"C:\Users\main.kv")
class MainApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.theme_cls = ThemeManager()
def build(self):
self.theme_cls.theme_style = "Light"
self.theme_cls.primary_palette = "Green"
self.theme_cls.primary_hue = "200"
#return GUI
MainApp().run()
main.kv
#: include navigationdrawer.kv
Screen:
MDToolbar:
id: toolbar
pos_hint: {"top": 1}
elevation: 10
title: "Anything"
left_action_items: [["menu", lambda x: nav_drawer.toggle_nav_drawer()]]
NavigationLayout:
x: toolbar.height
ScreenManager:
id: screen_manager
Screen:
name: "scr 0"
MDLabel:
text: "Screen 0"
halign: "center"
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
navigationdrawer.kv
<ItemDrawer>:
theme_text_color: "Custom"
on_release:
print("HI IM Pringint" )
self.parent.set_color_item(self)
IconLeftWidget:
id: icon
icon: root.icon
theme_text_color: "Custom"
text_color: root.text_color
<ContentNavigationDrawer>:
orientation: "vertical"
padding: "8dp"
spacing: "8dp"
AnchorLayout:
anchor_x: "left"
size_hint_y: None
height: avatar.height
Image:
id: avatar
#size_hint: None, None
#size: "300dp", "300dp"
source: "img/tiger.jpg"
MDLabel:
text: "All Starts Here!"
font_style: "Button"
size_hint_y: None
height: self.texture_size[1]
MDLabel:
text: "Adding green energy to your life..."
font_style: "Caption"
size_hint_y: None
height: self.texture_size[1]
ScrollView:
# DrawerList:
# id: md_list
MDList:
id: md_list
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"
Спасибо, надеюсь, это поможет!