KivyMD应用返回MenuScreen触发ScreenManagerException错误求助
问题分析与修复方案
核心问题
出现 No Screen with name "MenuScreen" 错误的原因有两个:
- Kivy 屏幕的名称属性是
name,但你在 kv 文件中错误使用了葡萄牙语的nome - 返回按钮尝试跳转的屏幕名称与实际定义的不匹配
具体修复步骤
1. 修正 kv 文件中的属性名错误
将 <MenuScreen> 和 <PerfilPaciente> 中的 nome 改为 Kivy 标准属性 name:
<MenuScreen>: name:'menu' # 替换原有的 nome:'menu' # 其余代码保持不变 <PerfilPaciente>: name:'PerfilPaciente' # 替换原有的 nome:'PerfilPaciente' # 其余代码保持不变
2. 修改返回按钮的目标屏幕名称
在 <TabelaPacientes> 的返回按钮中,将目标名称从 MenuScreen 改为实际定义的 menu:
<TabelaPacientes>: name:'TabelaPacientes' # 其余代码保持不变 MDRectangleFlatButton: text:'Go back' on_press:root.manager.current='menu' # 替换原有的 'MenuScreen'
3. 清理冗余代码
Python 文件中定义的 sm 变量完全未被使用(你的应用实际使用的是 kv 文件中创建的 ScreenManager),可以删除以下代码块:
sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(TabelaPacientes(name='TabelaPacientes')) sm.add_widget(PerfilPaciente(name='PerfilPaciente'))
修复后逻辑说明
- 正向跳转:从
menu屏幕到TabelaPacientes屏幕的逻辑保持不变,因为目标名称匹配 - 反向跳转:返回按钮现在指向正确的屏幕名称
menu,与 kv 文件中定义的一致
内容的提问来源于stack exchange,提问作者livia
相关产品推荐
相关产品推荐

