python - KivyMD NavigationDrawer 在多个屏幕上滑动
问题描述
使用 KivyMD MDNavigationLayout,我正在尝试为应用程序制作导航抽屉!我是这样做的,但是我的导航抽屉现在可以跨多个屏幕移动!我只希望它出现在我的HomeScreen上,而不是我的MenuScreen 上!
非常感谢你所做的一切。
千伏代码:
MDScreen:
MDNavigationLayout:
ScreenManager:
HomeScreen:
id: home
MDBoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'Navigation Drawer'
left_action_items: [['menu', lambda x: nav_drawer.set_state('toggle')]]
Widget:
MenuScreen:
id: menu
MDNavigationDrawer:
id: nav_drawer
<HomeScreen>:
name: 'home_screen'
MDLabel:
id: label
text: 'Home Screen'
halign: 'center'
MDRaisedButton:
text: 'Menu Screen'
pos_hint: {'center_x':0.5, 'center_y':0.4}
on_press: root.manager.current = 'menu_screen'
<MenuScreen>:
name: 'menu_screen'
MDLabel:
text: f'Menu Screen from Home Screen'
halign: 'center'
MDRaisedButton:
text: 'Home Screen'
pos_hint: {'center_x':0.5, 'center_y':0.4}
on_press: root.manager.current = 'home_screen'
主屏幕:
菜单屏幕:
解决方案
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
KV = '''
<ContentNavigationDrawer>:
ScrollView:
MDList:
OneLineListItem:
text: "Screen 1"
on_press:
root.nav_drawer.set_state("close")
root.screen_manager.current = "scr 1"
OneLineListItem:
text: "Screen 2"
on_press:
root.nav_drawer.set_state("close")
root.screen_manager.current = "scr 2"
MDScreen:
MDToolbar:
id: toolbar
pos_hint: {"top": 1}
elevation: 10
title: "MDNavigationDrawer"
left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]
MDNavigationLayout:
x: toolbar.height
ScreenManager:
id: screen_manager
MDScreen:
name: "scr 1"
MDLabel:
text: "Screen 1"
halign: "center"
MDScreen:
name: "scr 2"
MDLabel:
text: "Screen 2"
halign: "center"
MDNavigationDrawer:
id: nav_drawer
ContentNavigationDrawer:
screen_manager: screen_manager
nav_drawer: nav_drawer
'''
class ContentNavigationDrawer(MDBoxLayout):
screen_manager = ObjectProperty()
nav_drawer = ObjectProperty()
class TestNavigationDrawer(MDApp):
def build(self):
return Builder.load_string(KV)
TestNavigationDrawer().run()
推荐阅读
- android - Jetpack Compose TextField 模糊事件
- angular - 角度错误 NG8002:无法绑定到“formGroup”,因为它不是“form”的已知属性
- javascript - 删除提及(discord.js 12.5.3)
- jenkins - 从源代码仓库自动创建 Jenkins 作业和更新配置 - GitHub
- java - 使用 gson 和 ISO_INSTANT 序列化 LocalDateTime 生成错误:不支持的字段
- node.js - Electron-截取所有打开的窗口(其他应用程序)
- php - 如何显示ckeditor 5数据
- javascript - MONGODB 中无法识别的表达式“$push”
- google-chrome-extension - 我可以单击按钮更改我的 chrome 扩展程序中的语言吗?
- docker - docker buildx - 如何使用不同的 Dockerfile 或切换到一个