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
相关产品推荐
相关产品推荐

