MDNavigationDrawer 在所有阻挡 MDToolBar 菜单按钮的东西之上
MDNavigationDrawer on top of everything blocking the MDToolBar Menu button
试图让工具栏作为抽屉的打开和关闭按钮,但由于某种原因,抽屉打开后,菜单按钮不再活动,抽屉在它上面(不可见)。您可以从工具栏菜单区域拖动抽屉,即使它们在 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()
如何调整抽屉覆盖的区域?
谢谢!
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()
试图让工具栏作为抽屉的打开和关闭按钮,但由于某种原因,抽屉打开后,菜单按钮不再活动,抽屉在它上面(不可见)。您可以从工具栏菜单区域拖动抽屉,即使它们在 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()
如何调整抽屉覆盖的区域?
谢谢!
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()