kv 语言的 Kivy 屏幕管理器参考

2024-03-20

我正在尝试制作一个主菜单,让我在单击按钮时切换屏幕,但我不知道如何从按钮引用管理器。

我有一个主菜单页面的设置(在 kv 文件中):

<MainMenu>:  #AnchorLayout
     BoxLayout:
         Button:
             text: "button 1"
         Button:
             text: "change screen"
             on_release: root.manager.current = "OtherPage"

<MainWidget>:
    screen_manger: screen_manager
    ScreenManger:
        id: screen_manger
        Screen:
            name: "MainMenu"
            MainMenu
        Screen:
            name: "OtherPage"
            OtherPage    #this is defined in the kv file, just lazy to type it.

当我点击按钮时Change Screen, i get:

AttributeError: 'MainMenu' object has no attribute 'manager'

老实说,这并不让我感到惊讶。我想我可以通过用 python 代码编写所有布局并在中添加对屏幕管理器的引用来解决这个问题BoxLayout or MainMenu小部件,但我不知道如何在 kv 文件中执行此操作。


更好地理解问题后重新做答案:

您的 MainWidget 实例不知道 screen_manager 引用,它不会传递给它(并且在其规则中root引用 MainWidget 实例,而不是ScreenManager one.

如果你把manager: screen_manager根据声明MainWidget实例(第 15 行),然后添加一个manager将 ObjectProperty 添加到 MainWidget 的 python 声明中,然后您的绑定就会起作用。

python:

class MainWidget(Widget):
    manager = ObjectProperty(None)

kv:

<MainWidget>:
    screen_manger: screen_manager
    ScreenManger:
        id: screen_manger
        Screen:
            name: "MainMenu"
            MainMenu:
                manager: screen_manager
        Screen:
            name: "OtherPage"

那么它应该按照你想要的方式工作。

编辑:另外,qua-non 的这个 wiki 条目可能会有所帮助https://github.com/kivy/kivy/wiki/Linking-ScreenManager-to-a- Different-Widget https://github.com/kivy/kivy/wiki/Linking-ScreenManager-to-a-different-Widget

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

kv 语言的 Kivy 屏幕管理器参考 的相关文章

随机推荐

  • Django-tastypie:有关于 POST 中文件上传的示例吗?

    谁能给出一个关于使用 tastypie FileField 的完整示例 包括服务器端和客户端吗 这是我尝试过的 models py class Foo models Model img models ImageField upload to
  • VBA 从 OneDrive 下载文件

    我正在尝试从 OneDrive 下载文件 我是 API 概念的新手 这里是代码 Sub OneDrive Download Declare the Object Dim oRequest As Object Create and Assig
  • 从 Function 应用访问虚拟网络中的 Cosmos DB

    对这么长的帖子表示歉意 但我已经在这个问题上工作了几天 但似乎找不到解决方案 情况 我想通过将 Azure 中的 Cosmos DB 放置在虚拟网络 VNet 中来限制对它的访问 并且只允许通过 Function 应用进行访问 Approa
  • fipy 中的 Gmsh 网格并行执行

    我正在尝试解决 gmsh 网格上的并行问题 加载 geo 文件时发生错误 raise EnvironmentError Gmsh version must be gt 2 0 我安装的gmsh版本是2 8 3 我也尝试过2 13 2 10
  • 当用户想要应用程序中的另一种颜色时如何更改颜色? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 嗨 我制作了一个 Android 应用程序 我在想 如何实现通过单击按钮将整个应用程序更改为另一种颜色 例如从白色到黑色 有没有一种方
  • 调整 jQueryUI 对话框的高度,使其与内容一样高,最高可达最大值

    使用 jQueryUI 的对话框 我想弹出信息 我的问题是我想将对话框的高度设置为内容的高度 如果我不指定高度 那么效果很完美 高度根据内容的高度自动计算 那么问题是 如果内容非常高 对话框也会变得非常高并低于窗口 maxHeight 在这
  • TreeView 中的多项选择

    我正在使用 Windows 窗体TreeView在我的程序中进行控制 我想允许用户通过拖动鼠标指针来选择同一级别的多个节点 也称为 套索 选择 我认为没有标准TreeView允许这样做 我的问题是实现这一目标的最佳方法是什么 我是否必须在自
  • Ansible 检查作为变量提到的安装的磁盘空间

    我是 ansible 的新手 目前正在开发一个游戏 该游戏将查看远程计算机的磁盘空间是否已达到 70 的阈值 如果他们已经达到了 它应该抛出错误 我在以下位置找到了一个很好的例子 使用ansible管理磁盘空间 https stackove
  • 脚本缩小和与 MSBuild 的持续集成

    在我最近使用 C ASP NET 进行的一个项目中 我有一些相当复杂的 JavaScript 文件和一些漂亮的样式表 随着这些脚本资源规模的增长建议减少资源 http developer yahoo com yui compressor 当
  • 将 this.refs 作为 React.js 中 jsx 的属性传递

    我试图将 1 个节点作为另一个 React 组件的属性传递 如下所示 render function return div div div div
  • 在 Mac OSX 上卸载 Redis。安装更新后正在运行旧版本

    在Mac上 如何找到旧版本的Redis并将其完全卸载 我使用 OSX 并使用以下命令安装 Redisbrew install redis 由brew安装的版本状态redis 3 0 7 但是 当我运行命令时 redis server输出表明
  • 如何修复“超出最大调用堆栈大小”AngularJS

    我正在使用 AngularJs 和 Ui Router 我试图设置两个不同的主页 一个用于已登录的用户 另一个用于未登录的用户 但我收到以下错误 RangeError Maximum call stack size exceeded I r
  • 如何为 VS 扩展嵌套工具菜单按钮?

    我正在构建我的第一个 VS 扩展 因此我目前在该领域的技能相当于遵循教程和提出问题 该扩展用于加密 解密一部分web configWeb 应用程序项目的文件 我有 2 个命令 目前按钮设置在 vsct文件如下
  • 无法安装或运行应用程序 - System.Windows.Interactivity 版本 4.0.0.0

    我完全被困住了 搜索了又搜索了 我有一个对 System Windows Interactivity 版本 4 5 0 0 的引用 当我通过 ClickOnce 释放系统时 系统未安装并报告以下错误 无法安装或运行该应用程序 该应用程序需要
  • React-router-dom (v6) 与 Framer Motion (v4)

    我正在尝试将我的react router dom更新到v6 但它似乎会导致成帧器运动AnimatePresence出现问题 特别是退出过渡 在 App js 中 import Routes Route from react router d
  • 将项目添加到 Listview 控件

    我有一个listview在 C 中 具有三列 视图是详细信息 我需要向每个特定列添加一个项目 但我很难做到这一点 我已经尝试了几件事 这是我到目前为止所得到的 感谢您提前提供的任何帮助 Add the pet to our listview
  • 如何将上传的图像添加到对象数组中?

    我正在创建一个专辑网站只是为了学习 Javascript 我有输入框来添加专辑的标题 艺术家和年份 当按下 添加专辑 时 它会将此信息插入到名为 albumList 的对象上的数组中 然后在列表元素中显示该信息 我想知道是否可以允许用户上传
  • Angular2,TypeScript,如何读取/绑定属性值到组件类(在 ngOnInit 中未定义)[重复]

    这个问题在这里已经有答案了 有人可以建议我如何读取 绑定属性值到 component 类 这在 ngOnInit 方法中似乎未定义吗 这是一个 plunker 演示 http plnkr co edit 4FoFNBFsOEvvOkyfn0
  • 统计模型逻辑回归收敛问题

    我正在尝试在大型设计矩阵 约 200 列 上的 statsmodels 中运行逻辑回归 这些特征包括大量交互 分类特征和半稀疏 70 整数特征 虽然我的设计矩阵不是actually病态的 似乎有些接近 根据numpy linalg matr
  • kv 语言的 Kivy 屏幕管理器参考

    我正在尝试制作一个主菜单 让我在单击按钮时切换屏幕 但我不知道如何从按钮引用管理器 我有一个主菜单页面的设置 在 kv 文件中