#python #kivy #multiscreen
Вопрос:
Я пытаюсь создать приложение, которое запускается в главном меню, вы нажимаете кнопку воспроизведения, и оно отправляет вас в игру на другом экране.
Проблема в том, что я продолжаю получать сообщение об ошибке: «kv= Builder.load_file(«мой.kv»)», в котором говорится, что «WindowManager» является неизвестным классом.
import kivy from kivy.app import App from kivy.uix.widget import Widget from kivy.lang.builder import Builder from kivy.uix.screenmanager import Screen, ScreenManager from kivy.vector import Vector from kivy.uix.floatlayout import FloatLayout kv= Builder.load_file("my.kv") class WindowManager(ScreenManager): pass class MenuWindow(Screen): pass class Game(Screen): pass class MyApp(App): def build(self): return kv if __name__ == "__main__": MyApp().run()
А ВОТ ФАЙЛ KV:
WindowManager: MenuWindow: Game: lt;MenuWindowgt;: name: "Menu" FloatLayout: Button: text:"Play" on_release: app.root.current= "Game" lt;Gamegt;: name: "Game"
Комментарии:
1. Решено: мне пришлось переместить «kv= Builder.load_file(«мой.kv»)» прямо под всеми определениями классов, чтобы код мог сначала выполнить их, а затем перейти к файлу KV
2. Небольшое предложение: вы можете переименовать имя класса приложения так же, как имя файла .kv, если оба файла находятся в одном каталоге. Вам не нужно подключать их к Builder с помощью этого метода.