Python KivyMD MDNavigationRail,按图标

Python KivyMD MDNavigationRail,按图标,python,kivy,kivy-language,kivymd,Python,Kivy,Kivy Language,Kivymd,我试图使用KivyMD中的一个新功能,MDNavigationRail,并希望为其中的图标提供一个功能。目标是用户可以通过按下代表它的图标来切换到所需的屏幕。我按时给了图标一个。但是出了问题,我犯了一个错误值错误:MDNavigationRail.state设置为无效选项“向下”。必须是以下各项之一:[“关闭”、“打开”]。栏杆应该是开着的还是关着的,我想,难道不能给它一个功能吗?此外,我想知道是否有可能不破坏文本。如果有人能帮我,那就太好了 My.py文件 from kivy.uix.scre

我试图使用KivyMD中的一个新功能,MDNavigationRail,并希望为其中的图标提供一个功能。目标是用户可以通过按下代表它的图标来切换到所需的屏幕。我按时给了图标一个
。但是出了问题,我犯了一个错误<代码>值错误:MDNavigationRail.state设置为无效选项“向下”。必须是以下各项之一:[“关闭”、“打开”]
。栏杆应该是开着的还是关着的,我想,难道不能给它一个功能吗?此外,我想知道是否有可能不破坏文本。如果有人能帮我,那就太好了

My.py文件

from kivy.uix.screenmanager import ScreenManager

from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen


class Screen1(MDScreen):
    def screen2(self):
        self.manager.current = 'screen2'


class Screen2(MDScreen):
    def screen1(self):
        self.manager.current = 'screen1'

    def rail_open(self):
        if self.ids.rail.state == "open":
            self.ids.rail.state = "close"
        else:
            self.ids.rail.state = "open"


class MyScreenManager(ScreenManager):
    def __init__(self, **kwargs):
        super(MyScreenManager, self).__init__(**kwargs)


class Test(MDApp):
    def build(self):
        return MyScreenManager()

Test().run()

<MyScreenManager>:
    Screen1:
        id: screen1
        name: 'screen1'
    Screen2:
        id: screen2
        name: 'screen2'

<Screen1>:
    id: screen1
    MDFloatLayout:
        MDRectangleFlatButton:
            text: "Change to screen 2"
            on_press: root.screen2()
            pos_hint: {'center_x':0.5, 'center_y':0.5}

<Screen2>:
    id: screen2
    MDBoxLayout:
        orientation: "vertical"
        MDToolbar:
            left_action_items: [["menu", lambda x: root.rail_open()]]
        MDBoxLayout:
            MDNavigationRail:
                id: rail
                elevation: 1
                use_resizeable: True
                MDNavigationRailItem:
                    icon: "home"
                    text: "homepage"
                    on_press: root.screen1()
                MDNavigationRailItem:
                    icon: ""
                    text: ""
            MDFloatLayout:
                MDTextField:
                    id: field1
                    hint_text: "Enter something:"
                    size_hint_x: 0.4
                    pos_hint: {'center_x':0.25,'top':0.8}
我的kv文件

from kivy.uix.screenmanager import ScreenManager

from kivymd.app import MDApp
from kivymd.uix.screen import MDScreen


class Screen1(MDScreen):
    def screen2(self):
        self.manager.current = 'screen2'


class Screen2(MDScreen):
    def screen1(self):
        self.manager.current = 'screen1'

    def rail_open(self):
        if self.ids.rail.state == "open":
            self.ids.rail.state = "close"
        else:
            self.ids.rail.state = "open"


class MyScreenManager(ScreenManager):
    def __init__(self, **kwargs):
        super(MyScreenManager, self).__init__(**kwargs)


class Test(MDApp):
    def build(self):
        return MyScreenManager()

Test().run()

<MyScreenManager>:
    Screen1:
        id: screen1
        name: 'screen1'
    Screen2:
        id: screen2
        name: 'screen2'

<Screen1>:
    id: screen1
    MDFloatLayout:
        MDRectangleFlatButton:
            text: "Change to screen 2"
            on_press: root.screen2()
            pos_hint: {'center_x':0.5, 'center_y':0.5}

<Screen2>:
    id: screen2
    MDBoxLayout:
        orientation: "vertical"
        MDToolbar:
            left_action_items: [["menu", lambda x: root.rail_open()]]
        MDBoxLayout:
            MDNavigationRail:
                id: rail
                elevation: 1
                use_resizeable: True
                MDNavigationRailItem:
                    icon: "home"
                    text: "homepage"
                    on_press: root.screen1()
                MDNavigationRailItem:
                    icon: ""
                    text: ""
            MDFloatLayout:
                MDTextField:
                    id: field1
                    hint_text: "Enter something:"
                    size_hint_x: 0.4
                    pos_hint: {'center_x':0.25,'top':0.8}
:
屏幕1:
id:屏幕1
名称:“屏幕1”
屏幕2:
id:屏幕2
名称:“屏幕2”
:
id:屏幕1
MDF布局:
MDRectangleFlatButton:
文本:“切换到屏幕2”
按:root.screen2()
位置提示:{'center_x':0.5,'center_y':0.5}
:
id:屏幕2
MDBoxLayout:
方向:“垂直”
MDToolbar:
左_操作_项:[[“菜单”,lambda x:root.rail_open()]
MDBoxLayout:
MDNavigationRail:
id:铁路
标高:1
使用可调整大小:True
MDNavigationRailItem:
图标:“家”
正文:“主页”
按:root.screen1()
MDNavigationRailItem:
图标:“
案文:“”
MDF布局:
MDTextField:
id:字段1
提示文字:“输入内容:”
大小提示:0.4
位置提示:{'center_x':0.25,'top':0.8}

这是一个bug。已确定-