Python KivyMD MDNavigationRail,按图标
我试图使用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
。但是出了问题,我犯了一个错误<代码>值错误: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。已确定-