如何使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换

2024-03-17

我是使用 kivymd 的初学者,并尝试使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换,我正在阅读一些文档并最终得到了这段代码,但它对我不起作用:

from kivy.lang import Builder
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivymd.theming import ThemableBehavior
from kivymd.uix.list import MDList
from kivymd.app import MDApp



Window.size = (300, 500)
navigation_helper = """
Screen:
    MDToolbar:
        id: toolbar
        pos_hint: {"top": 1}
        elevation: 10
        title: "MDNavigationDrawer"
        left_action_items: [["menu", lambda x: nav_drawer.set_state("open")]]
        
    NavigationLayout:
        x: toolbar.height

        ScreenManager:
            id: screen_manager

            Screen:
                name: "scr 1"

                MDLabel:
                    text: "Go to Hell"
                    halign: "center"

            Screen:
                name: "scr 2"

                MDLabel:
                    text: "Hell"
                    halign: "center"

        MDNavigationDrawer:
            id: nav_drawer

            ContentNavigationDrawer:
                screen_manager: screen_manager
                nav_drawer: nav_drawer
           
                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"


"""



class DemoApp(MDApp):
    class ContentNavigationDrawer(BoxLayout):
        screen_manager = ObjectProperty()
        nav_drawer = ObjectProperty()

    class DrawerList(ThemableBehavior, MDList):
        pass

    def build(self):
        screen = Builder.load_string(navigation_helper)
        return screen

    def on_start(self):
        pass


DemoApp().run()

但它给了我这个错误“ AttributeError:'Screen'对象没有属性'nav_drawer'”,我不确定我做错了什么。


当你使用一个对象来引用一个对象时id在同一规则内id已定义,您不需要在其前面添加root:

                    OneLineListItem:
                        text: "Screen 1"
                        on_press:
                            nav_drawer.set_state("close")
                            screen_manager.current = "scr 1"

                    OneLineListItem:
                        text: "Screen 2"
                        on_press:
                            nav_drawer.set_state("close")
                            screen_manager.current = "scr 2"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换 的相关文章

  • 如何使用 lstm 执行多类多输出分类

    I have multiclass multioutput classification see https scikit learn org stable modules multiclass html https scikit lear
  • scikit-learn LinearRegression 的意外交叉验证分数

    我正在尝试学习使用 scikit learn 来完成一些基本的统计学习任务 我认为我已经成功创建了适合我的数据的线性回归模型 X train X test y train y test cross validation train test
  • 如何向数据添加填充以使其可以接受 pycrypto 库中的 AES256 加密算法

    有人可以告诉我如何向数据添加填充 使其可以接受 pycrypto 库 Python 中的 AES256 加密算法 提前非常感谢 看着文档 http www dlitz net software pycrypto doc 看来要由图书馆用户自
  • Python(openpyxl):将数据从一个excel文件转移到另一个(模板文件)并用另一个名称保存,同时保留模板

    我有一个templateexcel 文件名为template xlsx其中有许多张 我想从单独的地方复制数据 csv文件到第一页template xlsx 命名为data 并将新文件另存为result xlsx同时保留原来的模板文件 我想粘
  • 如果新文件不存在则写入新文件,如果存在则追加到文件

    我有一个程序可以写入用户的highscore到一个文本文件 该文件由用户选择时命名playername 如果具有该特定用户名的文件已经存在 那么程序应该附加到该文件 以便您可以看到多个highscore 如果具有该用户名的文件不存在 例如
  • 如何在python包中包含.pyx文件

    我在我的包中使用了 cythonpyirt https github com 17zuoye pyirt 但是当我将其发布到 pypi 时 pyx 文件不包含在 tar gz 中 我认为这一定与安装文件有关 但是 我找不到解决这个问题的方法
  • 如何在 pySpark 数据框中添加行 ID [重复]

    这个问题在这里已经有答案了 我有一个 csv 文件 我在 pyspark 中将其转换为 DataFrame df 经过一番改造后 我想在 df 中添加一列 这应该是简单的行 ID 从 0 或 1 开始到 N 我将 df 转换为 rdd 并使
  • 如何在 Google App Engine 中为模型定义唯一属性?

    我需要一些独特的属性 我怎样才能实现这个目标 有没有类似的东西unique True 我正在使用适用于 Python 的 Google App Engine Google 提供了执行此操作的函数 http code google com a
  • Pandas Dataframe.to_csv 小数=',' 不起作用

    在 Python 中 我正在将 Pandas Dataframe 写入 csv 文件 并希望将小数分隔符更改为逗号 像这样 results to csv D Data Kaeashi BigData ProcessMining Voorbe
  • 如何让MagicMock返回多个值

    我想模拟一个图书馆 matplotlib对于它的价值 并且遇到一个问题 当调用模拟并期望返回元组时 它会失败 有一个更好的方法吗 Python 3 7 2 default Jan 13 2019 12 50 15 Clang 10 0 0
  • Altair 条形图具有可变宽度的条形?

    我正在尝试在 Python 中使用 Altair 制作条形图 其中条形的宽度根据源数据帧列中的数据而变化 最终目标是获得如下所示的图表 条形的高度对应于每种能源技术的边际成本 在源数据框中以列形式给出 条形宽度对应于每种能源技术的容量 也以
  • VS Code Pylance 不突出显示变量和模块

    我正在使用带有 Python 和 Pylance 扩展的 VS Code 我遇到的问题是 Pylance 扩展没有对模块和数据框等内容进行语法突出显示 我希望顶部的模块为绿色 df 变量为蓝色 我正在使用默认的深色 颜色主题 这是我的 VS
  • Django 中同一个模型的多个多对多关系

    给定以下具有两个多对多关系的模型 class Child models Model name models CharField max length 80 class Foo models Model bar models ManyToMa
  • 带参数的 Python 列表过滤

    python中有没有一种方法可以在列表上调用过滤器 其中过滤函数在调用期间绑定了许多参数 例如有没有办法做这样的事情 gt gt def foo a b c return a lt b and b lt c gt gt myList 1 2
  • FileAllowed 不显示错误消息

    我正在使用 WTForms 我正在对文件上传应用验证 并将其限制为仅 jpg png 和 pdf 格式 但是 如果我输入不正确 则不会出现错误消息 我按照这个教程https flask wtf readthedocs io en stabl
  • 通过 Tweepy 在 Twitter 上更新状态时的回溯

    我一直在尝试使用 Twitter 在 Twitter 上发布我的 Rpi 读数tweepy 但首先我想检查一下是否tweepy本来可以正常工作 但事实并非如此 我正确安装了软件包 但是当我尝试运行简单的代码来发布某些内容时 出现错误 是的
  • 使用 PyCharm 分析 Django

    即使在开发环境中 我的应用程序也相当慢 所以我想找出是什么导致它变慢 以便我可以尝试修复它 我了解调试工具栏 根据它的报告 数据库查询和下载的源都不是问题 所以它一定是业务逻辑 但是 我无法使用 Django 服务器运行 PyCharm 分
  • 如果我更改当前工作目录,为什么 __file__ 会变成无效路径?

    执行中test py from tmp import os print os path abspath file os chdir var print os path abspath file output tmp test py var
  • Mac 上的 PythonXY?

    如何在 Mac OS X Lion 上安装 Python 我开始了 它应该能够通过 macports 但无论如何我找不到 mac ports 网站上所述的端口 pythonXY 我对 MAC 和 pythonXY 都不太了解 但在 pyth
  • 从 s3 获取 ogg 轨道的长度而不下载整个文件

    如何在不下载整个文件的情况下获取 ogg 文件的播放长度 我知道这是可能的 因为 HTML5 标签和 VLC 都可以在加载 URL 后立即显示整个播放长度 而无需下载整个文件 有标题或我可以阅读的内容吗 也许甚至是比特率 我可以将其除以文件

随机推荐

  • Polars 从日期时间对象中添加/减去 UTC 偏移量

    我想添加 减去UTC极坐标中日期时间对象的偏移量 通常以小时为单位 但我似乎没有找到实现此目的的方法 鉴于日历年中存在夏令时 UTC 偏移量可以是动态的 例如 EST EDT 映射到 5 4 小时UTC分别偏移 from datetime
  • 创建可以通过拖动背景区域中的任意位置来移动的非矩形表单

    我想通过左键单击并按住背景区域来移动表单窗口 就像我们通常使用标题栏一样 然后我还想将应用程序的表单窗口 即矩形窗口 更改为自定义设计的图形窗口 我在许多其他应用程序中看到过这种类型的窗口 所以我相信这是可能的 问题一 要允许在拖动其客户区
  • 如何使用 Cordova 处理文件?

    注意 此问题被重新发布 因为无论出于何种原因 原始发布者决定在提供并接受答案后将其删除 因此 我再次添加它以保存知识 原问题 我尝试在混合应用程序中使用 apache cordova api 从 localhost 8080 filenam
  • 如何从 CoNLL 格式转换为 spacy 格式

    我目前正在研究 NER 模型 我有一堆以 CoNLL 格式存储的数据 需要转换为 Spacy 格式 在 CoNLL 中 句子的每个单词旁边都有一个标签 在 Spacy 中 标签仅显示给具有实际标签的单词 我如何从下面的这种格式转换 CoNL
  • 为什么 clang 发出 32 位 float ps 指令来获取 64 位 double 的绝对值?

    clang为什么会转fabs double into vandps代替vandpd 就像海湾合作委员会那样 示例来自编译器资源管理器 https gcc godbolt org z TsfW9hrjT include
  • UTC 和 Etc/UTC 时区之间有区别吗?

    在 PHP 文档中 支持的时区列表 http php net manual en timezones others php UTC被列出两次 UTC Etc UTC 这两者之间有概念上的区别吗 或者它们只是同义词 简短回答 NO 有没有不同
  • JCL 安装到 Delphi 10 西雅图时出错

    我正在尝试将 JCL JVCL 安装到 Delphi 10 Seattle 中 我收到以下错误 使用 Embarcadero RAD Studio 10 西雅图 Embarcadero Delphi for Win32 编译器版本30 0
  • PHP 浮动使用的最佳实践

    我读过浮点指南 http floating point gui de languages php 关于在 PHP 中使用 float 类型 答案是使用 BC Math 扩展 使用字符串可以将浮点数表示为精确类型 并防止浮点数和整数问题 同时
  • 从 VBA 中的不同模块调用子例程

    是否可以从一个函数调用一个函数Module到另一个 我有以下代码 Sub MAIN Call IDLE End Sub MAIN位于Module1 IDLE位于Module2并定义为 Sub IDLE 在调用前加上 Module2 前缀 例
  • 使用 SUMO 场景的子集进行 OMNeT++ 网络模拟(使用 VEINS)

    我正在尝试使用 OMNeT Veins 和 SUMO 评估在车载网络上运行的应用程序 因为该应用程序依赖于现实的流量行为 所以我决定使用LuST场景 https github com lcodeca LuSTScenario 这似乎是此类数
  • glewInit() 失败,OpenGL 应用程序

    我正在尝试使用 glew glfw 构建一个 OpenGL 应用程序 我已经下载了二进制文件 将它们放在文件夹的根目录中 添加了 include 和 lib 目录的路径 并告诉我的项目需要 glew32 lib GLFW lib 和 ope
  • Delphi XE AnsiStrings 带有转义组合变音符号

    将包含转义组合变音标记 如 Fu u0308rst 的 Delphi XE AnsiString 转换为友好的 WideString F rst 的最佳方法是什么 我知道这并不总是适用于所有组合 但应该支持常见的拉丁语块 而无需自己构建愚蠢
  • WP7 - 水平滚动列表框的问题

    我需要一个水平滚动的列表框 并且我遵循了与此相关的其他几个问题提出的关于如何实现的建议 我目前所拥有的确实水平滚动 但在滑动结束时 它不会停留在我滚动到的位置 它会恢复到原始显示 有点像它的一块松紧带 在滑动后返回到其原始位置它被拉伸了 我
  • 使用dispatchEvent获得焦点事件

    当我触发一个focus事件与dispatchEvent在输入框上 其onfocus被调用 但在 UI 上输入框未获得焦点 这种行为有什么原因吗 var test document getElementById test test onfoc
  • 是否可以部分解码和更新 JSON? (去)

    我只需要解码和更新 json 对象的特定值 问题是我不知道该对象的完整结构 coding json 包 忽略 截断结构中未提供的字段 因此对这些字段进行编码会丢失 我想知道是否可以只解组我知道的结构 更新它 然后编组它 而不截断 删除未知的
  • 登录 Facebook 后如何重定向 url?

    我创建了一个 Django 应用程序 并通过 Facebook 连接到该应用程序 现在 当我单击 Facebook 登录按钮时 会弹出 oauth 页面 当我提供用户名和密码时 它会关闭 而不会实际将页面重定向到任何页面 但是当我在新选项卡
  • 如何避免graphviz中的重叠节点?

    我正在尝试绘制一个包含许多节点和边的图 然而 该图变得过于笨拙 节点和边重叠 我尝试了 未成功 以下所有方法或这些方法的组合 size 12 0 20 0 margin 0 0 len 1 0 我在用neato生成一个 png 文件 尺寸规
  • 删除一行后如何刷新jquery数据表

    数据表中的每一行都有一个删除按钮 单击删除按钮后 我将调用以下代码 deleteButton live click function var this this var url this attr id example fnReloadAj
  • 如何在 ASP.Net CreateUserWizard 中获取新注册用户的用户 ID?

    如何在 ASP Net CreateUserWizard 中获取新注册用户的用户 ID 我有一个页面允许新用户使用 创建用户向导 进行注册 创建用户后 我想使用新用户的用户 ID 和电子邮件在客户详细信息表中插入一行 我尝试在 Create
  • 如何使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换

    我是使用 kivymd 的初学者 并尝试使用 KivyMD 在 NavigationDrawer 内的屏幕之间切换 我正在阅读一些文档并最终得到了这段代码 但它对我不起作用 from kivy lang import Builder fro