试图使工具栏充当抽屉的打开和关闭按钮,但是由于某种原因,在抽屉打开后,菜单按钮不再处于活动状态,并且抽屉位于其顶部(不可见)。您可以将抽屉从工具栏菜单区域中拖动,即使它们被分隔在BoxLayout中。
from kivy.app import App
from kivymd.theming import ThemeManager
from kivymd.app import MDApp
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.widget import Widget
from kivymd.uix.button import MDIconButton
from kivy.lang import Builder
KV = """
#:import Clock kivy.clock.Clock
Screen:
BoxLayout:
orientation: 'vertical'
MDToolbar:
size_hint_y: 0.1
elevation: -10
left_action_items: [["menu", lambda x: nav_drawer.set_state('toggle')]]
NavigationLayout:
ScreenManager:
id: screen_manager
Screen:
name: 'menu'
BoxLayout:
orientation: 'vertical'
Widget:
Screen2:
name: 's2'
BoxLayout:
orientation: 'vertical'
Widget:
MDLabel:
text: 'Profile'
halign: 'center'
MDNavigationDrawer:
id: nav_drawer
scrim_color: [0, 0, 0, 0.0]
elevation: 0
ContentNavigationDrawer:
id: drawerContent
BoxLayout:
orientation: 'vertical'
MDLabel:
text: 'App'
font_style: 'H1'
MDRectangleFlatButton:
text: 'Select 1'
pos_hint: {'center_x':0.5,'center_y':0.1}
on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager, nav_drawer, "s2"), .3)
MDRectangleFlatButton:
text: 'Main'
pos_hint: {'center_x':0.5,'center_y':0.1}
on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager, nav_drawer, "menu"), .3)
"""
class ContentNavigationDrawer(BoxLayout):
pass
class Screen2(Screen):
pass
#sm = ScreenManager()
#sm.add_widget(Screen2(name='s2'))
class MainApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "Orange"
sm = ScreenManager()
sm.add_widget(Screen2(name='s2'))
Builder.load_string(KV)
def set_screen(self, manager, nav_drawer, name_screen):
manager.current = name_screen
nav_drawer.set_state("toggle")
MainApp().run()
如何调整抽屉覆盖的面积?
谢谢!
答案 0 :(得分:0)
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.lang import Builder
from kivymd.app import MDApp
KV = """
#:import Clock kivy.clock.Clock
Screen:
MDToolbar:
id: toolbar
pos_hint: {"top": 1}
elevation: 0
left_action_items: [["menu", lambda x: nav_drawer.set_state('toggle')]]
NavigationLayout:
x: toolbar.height
ScreenManager:
id: screen_manager
Screen:
name: 'menu'
BoxLayout:
orientation: 'vertical'
Widget:
Screen2:
name: 's2'
BoxLayout:
orientation: 'vertical'
Widget:
MDLabel:
text: 'Profile'
halign: 'center'
MDNavigationDrawer:
id: nav_drawer
scrim_color: [0, 0, 0, 0.0]
elevation: 0
ContentNavigationDrawer:
id: drawerContent
BoxLayout:
orientation: 'vertical'
MDLabel:
text: 'App'
font_style: 'H1'
MDRectangleFlatButton:
text: 'Select 1'
pos_hint: {'center_x':0.5,'center_y':0.1}
on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager, nav_drawer, "s2"), .3)
MDRectangleFlatButton:
text: 'Main'
pos_hint: {'center_x':0.5,'center_y':0.1}
on_release: Clock.schedule_once(lambda x: app.set_screen(screen_manager, nav_drawer, "menu"), .3)
"""
class ContentNavigationDrawer(BoxLayout):
pass
class Screen2(Screen):
pass
class MainApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "Orange"
sm = ScreenManager()
sm.add_widget(Screen2(name='s2'))
return Builder.load_string(KV)
def set_screen(self, manager, nav_drawer, name_screen):
manager.current = name_screen
nav_drawer.set_state("toggle")
MainApp().run()