Когда вы создаете .kv, существуют базовые, но строгие правила, среди которых может быть только один верхний уровень, верхний уровень идентифицируется, потому что у него нет «<>», кроме того, чтобы приложение распознало его, оно должно иметьТо же имя приложения в нижнем регистре, в вашем случае .kv называется weather .kv и Weather App app.Но вышеизложенного не произойдет, если вы используете Builder, в случае, если у .kv есть рут, как в вашем случае Builder.load_string()
возвращает его, поэтому вы должны вернуть его в методе сборки приложения:
from kivy.app import App
from kivy.lang import Builder
KV = '''
Label:
text: "Hello World"
'''
root = Builder.load_string(KV)
class WeatherApp(App):
def build(self):
return root
if __name__ == '__main__':
WeatherApp().run()