【问题标题】:Is it possible to read from more than one .kv file in Kivy app?是否可以在 Kivy 应用程序中读取多个 .kv 文件?
【发布时间】:2015-06-02 16:20:35
【问题描述】:

我知道简短的回答可能是“不”,但也许这值得再问一次。

如果我知道一个有几千行的 Kivy 应用程序 - 那么是否可以在另一个 kv 文件中编写一些类?

这将使编辑、更正错误、进行更改...等变得更加容易。

澄清一下 - .KV 文件将是彼此的延续 - 不指向并行应用程序。

我们将不胜感激一些专家的见解 - 谢谢。

【问题讨论】:

    标签: python kivy


    【解决方案1】:

    是的!您可以像普通 python 文件一样在文件中导入.kv 文件,开头为:

    #:include otherfile.kv
    

    如果您希望文件先卸载并重新加载,您可以强制导入输入

    #:include force otherfile.kv
    

    相反。

    所有这些都写在Kivy Language Documentation 中,其中充满了有用的说明。

    【讨论】:

    • 我很久以前就不再和 Kivy 搞混了——但我可以从文档中看到该选项在 1.9 中可用——自从我提出这个问题以来,这是一个更新的版本。所以总而言之,我的问题并不疯狂。
    • 您知道您是否可以使用这种语法导航目录吗?例如,我可以用from ui.myclass import MyClass 在 python 中导入东西,但#:include ui.mywidget.kv 不起作用。文档似乎没有提到这一点。
    • @Josh 是的,你可以#: include ui/mywidget.kv
    【解决方案2】:

    是的:

    from kivy.lang import Builder
    Builder.load_file('your_filename')
    

    【讨论】:

    • 好的,但我的问题是我是否可以加载多个一起工作的 kv 文件。
    • kv 规则是独立的,只要在实例化小部件之前加载规则,就会应用该小部件的规则。您可以将它们分布在任意数量的文件中,但您不能在多个文件中破坏单个 kv 规则。
    • 我了解kv规则。我只对加载多个 kv 文件感兴趣。假设示例:如果 name == "main": kv1App().run() kv2App().run() 。 . kv(n)App.run() 基本上,python 文件从指向相同“接口”的不同 kv 读取类。谢谢
    • 我真的不明白你的问题的本质。在您的示例中,应用程序将照常根据其名称加载 kv 文件,但它们不会同时运行或其他任何东西。
    • '但它们不会同时运行或任何东西' - 是的,但 python 可以同时运行进程
    【解决方案3】:

    我相信您可以创建多个 .kv 文件,并且可以通过这种方式将其包含在一个位置(根文件),只有您可以分发/分支您的代码 Kivy 文档明确指出“一个 kv 文件最多只能包含一个根小部件” 表示只有一个 kv 主文件。即使您运行 Mainapp 类的多个实例

    我是 Kivy 的新手,所以如果我错了,请纠正我。 谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 1970-01-01
      相关资源
      最近更新 更多