kivy如何使用Builder.load_file?

Kivy how to use Builder.load_file?

我的目录结构如下:

project/
    controller/
        __init__.py
        app1.py
    view/
        app1.kv
    main.py

我的main.py是:

from controller.app1 import App1


def main():
    App1().run()


if __name__ == '__main__':
    main()

我的app1.py是:

from kivy.app import App
from kivy.lang import Builder

Builder.load_file('view/app1.kv')

class App1(App):
    pass

我是运行:

kivy main.py

但是我的Kivy里面的内容没有加载。

事实证明,方法build()必须在继承自App的class中实现,而这个方法必须returnBuilder.load_file('view/app1.kv') ,并使用@Leon 建议我的 app1.py 是:

from kivy.app import App
from kivy.lang import Builder


class App1(App):
    def build(self):
        return Builder.load_file(
        os.path.join(dirname(__file__), '../view/app1.kv')
    )

现在,Kivy 文件已正确加载。

当您使用 Build.load_file 加载 .kv 文件时,确保小部件是 root 避免它返回 None.read doc 以查看您使用 Builder

所做的其他事情
from kivy.app import App
from kivy.lang import Builder


class App1(App):
    def build(self):
        self.root = Builder.load_file(os.path.join(dirname(__file__),/app1.kv')
    )