python - 如何在 KivyMD (Python) 中结合导航抽屉和多个屏幕?
问题描述
我是一名编码初学者,我想制作一个包含带有导航抽屉的工具栏的移动应用程序,并且应该将用户带到应用程序中的不同屏幕。我搜索了很多解决方案,但并没有真正找到,因为有时整个代码都在 .kv 文件中,因此很难处理变量并打印它们,例如在这段代码中:
如何使用 KivyMD 在 NavigationDrawer 中的屏幕之间切换
我试图将它与只使用 Kivy 而不是 KivyMD 的代码结合起来,但我失败了,因为它不是真正的移动应用程序:
https://www.techwithtim.net/tutorials/kivy-tutorial/multiple-screens/
我希望有一个人可以帮助我。谢谢!
解决方案
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
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"
Screen:
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
Screen:
name: "scr 1"
MDLabel:
text: "Screen 1"
halign: "center"
Screen:
name: "scr 2"
MDLabel:
text: "Screen 2"
halign: "center"
MDNavigationDrawer:
id: nav_drawer
ContentNavigationDrawer:
screen_manager: screen_manager
nav_drawer: nav_drawer
'''
class ContentNavigationDrawer(BoxLayout):
screen_manager = ObjectProperty()
nav_drawer = ObjectProperty()
class TestNavigationDrawer(MDApp):
def build(self):
return Builder.load_string(KV)
TestNavigationDrawer().run()
推荐阅读
- r - 在使用插入符号训练多个模型时使用相同的 trainControl 对象进行交叉验证是否可以进行准确的模型比较?
- c - Strcat 追加整个结构而不是一个元素
- wordpress - 如何确保仅售出 woocommerce 中任何产品的一个实例?
- hibernate - Spring Data 无法使用 *ScoreHibernateType 持久化 OptaPlanner 的 Score 对象
- jquery - 减少一个 jquery 函数以显示隐藏 div
- amazon-web-services - 弹性搜索查询中多列的通配符
- amazon-web-services - 启用代理协议的 AWS ELB TCP http 到 https 重定向
- python - 使用相同的对象创建新模型 odoo 11
- mongodb - AWS DMS - 将阵列从 MongoDB 迁移到 DynamoDB
- c# - 如果任何列具有空值,则按日期和小时获取所有记录组