如何简单地绑定导航抽屉按钮和屏幕?

如何解决如何简单地绑定导航抽屉按钮和屏幕?

我有问题。我想创建一个应用程序,并使用带有屏幕管理器的导航抽屉。但是,我无法执行屏幕切换。我可以在单击时更改按钮的颜色,但不能更改屏幕。您有想法,魔术公式甚至是舞蹈表演吗? 这是有问题的代码。我对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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?