如何在Kivy App中有效加载.kv文件

时间:2018-10-16 09:03:32

标签: python kivy kivy-language

我正在基于Kivy开发具有多个接口(约二十个屏幕)的应用程序,我想知道加载kv文件的最佳方法(从速度或性能方面而言)?

这是我想到的两种方法

案例1

将每个kv文件加载到其相应的界面定义文件中

[interface1.py]
...
Builder.load_file("path\to\interface1.kv")

class Interface1(Screen):
    # Class definition

...


[interface2.py]
...
Builder.load_file("path\to\interface2.kv")

class Interface2(Screen):
    # Class definition

...


[main.py]
...
if __name__ == '__main__':
    MainApp().run()

...

案例2

在运行应用程序之前加载kv文件

[interface1.py]
...
class Interface1(Screen):
    # Class definition

...


[interface2.py]
...
class Interface2(Screen):
    # Class definition

...


[main.py]
...
Builder.load_file("path\to\interface1.kv")
Builder.load_file("path\to\interface2.kv")

if __name__ == '__main__':
    MainApp().run()

...

1 个答案:

答案 0 :(得分:0)

我不会像总是为每个新的kv文件编写新代码那样,而是通过将KV文件放在目录中的方式像下面的方法那样来构建它。如以下内容:

import os
from os import listdir
from os.path import isfile, join, isdir
from kivy.lang import Builder

# Gets current python dir then add the KV dir
kv_path = os.getcwd() + '/kv/'
kv_load_list = [f for f in listdir(kv_path) if isfile(join(kv_path, f))]

# Loads all KV file
for file in kv_load_list:
    if file.endswith('.kv'):
        Builder.load_file(kv_path + file)