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

kivy.uix.screenmanager.ScreenManagerException错误求助:仅接受Screen组件

报错原因及解决方法

这个报错kivy.uix.screenmanager.ScreenManagerException: ScreenManager accepts only Screen widget.的核心原因是:ScreenManager组件只能添加Screen类型的子组件,不能直接放入BoxLayout这类普通布局。

从你的代码截图能看到,你直接把BoxLayout作为子元素加到了ScreenManager里,这不符合ScreenManager的使用规则——它是用来管理多个Screen页面的容器,每个页面必须是Screen组件,你需要的布局和控件要嵌套在Screen内部。

正确的写法是先把BoxLayout放到Screen里,再把Screen添加到ScreenManager中,示例代码如下:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout

# 定义一个包含布局的Screen
class MainScreen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        # 创建布局并添加到Screen中
        layout = BoxLayout()
        # 在这里向layout添加按钮、文本等你需要的控件
        self.add_widget(layout)

class MyApp(App):
    def build(self):
        sm = ScreenManager()
        # 将Screen添加到ScreenManager
        sm.add_widget(MainScreen(name='main'))
        return sm

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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:01:40