Как эффективно загружать файлы .kv в приложение Kivy - PullRequest
0 голосов
/ 16 октября 2018

Я разрабатываю приложение с несколькими интерфейсами (около двадцати экранов) на основе 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 голосов
/ 28 марта 2019

Вместо того, чтобы всегда писать новый код для каждого нового файла 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)
...