Ваш .kv
файл не содержит root правил , только правила класса. <class>:
- это правило класса, class:
- это root правило.
Это означает, что kivy действительно загружает ваш файл kv, но файл kv говорит только «если вы столкнулись с myManager
класс, стиль это так. " Вы можете добавить правило root или вернуть виджет root вручную.
root rule:
myManager:
connPage:
myGame:
<connPage>:
name: "main"
...
вернуть root виджет в коде:
kv = Builder.load_file("stylesheet.kv")
class MyApp(App):
def build(self):
return myManager()
Существует еще одна проблема:
myManager:
connPage:
myGame:
Все классы строчные, поэтому kivy будет анализировать connPage:
как добавление свойства к myManager
с именем connPage
и значением None
(то же самое для myGame:
). Чтобы обойти это название все классы прописными. Это легко пропустить, так как это действительно обсуждается только в небольшой заметке . Обычно python поощряет следовать руководству по стилю pep8 - хотя обычно это чисто стиль и не меняет смысла и поведения вашего кода, для файлов kv важно различать guish между свойствами (атрибутами) и дочерними (виджетами). Таким образом, правило root должно выглядеть следующим образом:
myManager:
ConnPage:
MyGame:
<ConnPage>:
...
и классы должны иметь соответствующие имена.
class ConnPage(Screen):
pass
class MyGame(Screen):
pass