我有问题。我想创建一个应用程序,并使用带有屏幕管理器的导航抽屉。但是,我无法执行屏幕切换。我可以在单击时更改按钮的颜色,但不能更改屏幕。您有想法,魔术公式甚至是舞蹈表演吗? 这是有问题的代码。我对Kivy还是比较菜鸟,请放纵自己。
鸟类危害Tracking_Main.py
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty, ListProperty
from kivy.uix.screenmanager import ScreenManager, Screen
from kivymd.app import MDApp
from kivymd.theming import ThemableBehavior
from kivymd.uix.list import OneLineIconListItem, MDList
from Stylesheet import *
class ContentNavigationDrawer(BoxLayout):
pass
class ItemDrawer(OneLineIconListItem):
icon = StringProperty()
text_color = ListProperty((0, 0, 0, 1))
class DrawerList(ThemableBehavior, MDList):
def set_color_item(self, instance_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 BHT(MDApp):
def build(self):
self.title = "Bird Hazard Tracking"
self.theme_cls.primary_palette = "Green"
return Builder.load_string(nav_drawer)
def on_start(self):
icons_item = {
"map": "Carte",
"equalizer": "Statistiques",
"calendar": "Calendrier",
"help-circle": "Tutoriel",
"copyright": "Crédits",
}
for icon_name in icons_item.keys():
self.root.ids.content_drawer.ids.md_list.add_widget(
ItemDrawer(icon=icon_name, text=icons_item[icon_name])
)
BHT().run()
Stylesheet.py
nav_drawer = """
<ItemDrawer>:
theme_text_color: "Custom"
on_release:
self.parent.set_color_item(self)
#I would like to put an action which can associate screen with each chosen button here.
#But if it's not possile I'm open to every simply solution.
IconLeftWidget:
id: icon
icon: root.icon
theme_text_color: "Custom"
text_color: root.text_color
<ContentNavigationDrawer>:
orientation: "vertical"
padding: "10dp"
spacing: "10dp"
MDLabel:
text: "Navigation"
font_style: "Button"
size_hint: 0.5, 0.1
height: self.texture_size[1]
ScrollView:
DrawerList:
id: md_list
Screen:
NavigationLayout:
ScreenManager:
id : screen_manager
Screen:
name : "map"
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: "Bird Hazard Tracking"
elevation: 10
left_action_items: [['menu', lambda x: nav_drawer.set_state()]]
MDLabel :
text : "Map"
Screen:
name : "stats"
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: " Bird Hazard Tracking"
elevation: 10
left_action_items: [['menu', lambda x: nav_drawer.set_state()]]
MDLabel :
text : "Stats"
Screen:
name : "cal"
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: " Bird Hazard Tracking"
elevation: 10
left_action_items: [['menu', lambda x: nav_drawer.set_state()]]
MDLabel :
text : "Calendrier"
Widget:
Screen:
name : "tuto"
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: " Bird Hazard Tracking"
elevation: 10
left_action_items: [['menu', lambda x: nav_drawer.set_state()]]
MDLabel :
text : "Tuto"
Widget:
Screen:
name : "cred"
BoxLayout:
orientation: 'vertical'
MDToolbar:
title: " Bird Hazard Tracking"
elevation: 10
left_action_items: [['menu', lambda x: nav_drawer.set_state()]]
MDLabel :
text : "Crédits"
Widget:
MDNavigationDrawer:
id: nav_drawer
ContentNavigationDrawer:
id: content_drawer
"""
感谢您花费时间和精力来制定应对措施。