如何解决如何简单地绑定导航抽屉按钮和屏幕?
我有问题。我想创建一个应用程序,并使用带有屏幕管理器的导航抽屉。但是,我无法执行屏幕切换。我可以在单击时更改按钮的颜色,但不能更改屏幕。您有想法,魔术公式甚至是舞蹈表演吗? 这是有问题的代码。我对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,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
"""
感谢您花费时间和精力来制定应对措施。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。