You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python/Kivy多屏幕切换功能失效,加载kv文件提示WindowManager为未知类如何解决

问题原因

报错的根本原因是KV文件加载顺序错误:你在Python代码中定义WindowManager、MenuWindow、Game这三个自定义类之前,就调用了Builder.load_file("my.kv")加载KV文件。KV文件解析时需要用到上述三个自定义类,但此时Python还未完成类的注册,因此会抛出「未知类」的错误。

修复方案

只需调整代码顺序,把KV加载的逻辑放到所有自定义类定义完成之后即可,修改后的完整Python代码如下:

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

# 先完成所有自定义类的定义
class WindowManager(ScreenManager):
    pass

class MenuWindow(Screen):
    pass

class Game(Screen):
    pass

# 类全部定义完成后再加载KV文件
kv = Builder.load_file("my.kv")

class MyApp(App):
    def build(self):
        return kv

if __name__ == "__main__":
    MyApp().run()

KV文件不需要做任何修改,修改后重新运行代码即可正常启动,点击Play按钮可以正常切换到游戏界面。

如果不想提前定义kv变量,也可以直接把KV加载逻辑放到build方法中,效果完全一致:

class MyApp(App):
    def build(self):
        return Builder.load_file("my.kv")

内容的提问来源于stack exchange,提问作者Kol4o100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:57:02