Python фреймворк Kivy не видит файл с расширением .kv
Проблема такова. Определяю родительский и дочерний классы в файле main.py. Также определяю дочерний класс в файле my.kv, добавляя к нему 2 виджета (Label и Button).
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class MyApp(App):
pass
class Child(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class Parent(BoxLayout):
obj = ObjectProperty(Child())
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.add_widget(self.obj)
if __name__ == '__main__':
MyApp().run()
my.kv
Parent:
<Child>:
Label:
text: "Some text"
Button:
text: "Button"
Определяю дочерний класс как свойство для родительского класса и при инициализации добавляю его в родительский. Но при запуске я не вижу ранее добавленных виджетов (Label и Button), на экране просто пустой виджет. Как будто файл my.kv просто игнорируется. Объясните, пожалуйста, в чем проблема.
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
В классе приложения нужно реализовать метод build, откуда нужно вернуть объект класса Child (в вашем случае):
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class MyApp(App):
def build(self):
return Child()
class Child(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class Parent(BoxLayout):
obj = ObjectProperty(Child())
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.add_widget(self.obj)
if __name__ == '__main__':
MyApp().run()
