Насколько я знаю, существует три способа использования kivy.
- Используйте его только в Python.
- Используйте формат .kv в Python, используя
Builder.load_string()
. - Используйте файлы .kv.
Я недавно обнаружил, что использование экземпляра kivy, инициализированного в Python, иногда работает быстрее, чем инициализированный в .kv
.
Например,
class Root(BoxLayout):
self.a = SomeWidget()
self.add_widget(self.a)
def some_function(self):
self.a.do_something() # <-- This line of the codes
имеет тенденцию быть быстрее, чем
Builder.load_string('''
Root:
SomeWidget:
id: a
''')
class Root(BoxLayout):
def some_function(self):
self.ids.a.do_something() # <-- This line of the codes
(только с учетом производительности между self.a.do_something()
и self.ids.a.do_something()
)
Я думаю, что основной цикл kivy работает асинхронно, а python работает синхронно, поэтому обращение к .kv
может быть отложено до тех пор, пока основной цикл не завершит цикл.Пожалуйста, исправьте меня, если я ошибаюсь.
Есть ли разница в производительности таким образом?
Кроме того, есть ли разница между использованием файлов Builder.load_string()
и .kv
с точки зрения производительностиа функциональность?