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

KivyMD点击Sign In按钮报错:'NoneType'无current属性

错误原因分析与解决方法

错误原因

  • 应用根组件未正确绑定:原代码中build()方法仅调用了load_all_kv_files()但未返回生成的MDScreenManager实例,导致KivyMD无法将屏幕管理器与应用关联。登录页(MDScreen)的manager属性因此为None,点击"Sign In"按钮执行root.manager.current时触发AttributeError。
  • 潜在变量未定义问题:登录页的"Sign Up"按钮使用了未声明的screen_manager变量,后续也会引发类似错误。

解决方法

1. 修正Python代码的build()方法

确保build()返回MDScreenManager实例,让应用正确加载根组件:

from kivymd.app import MDApp
from kivy.core.window import Window
from kivy.lang.builder import Builder
from kivymd.uix.screenmanager import MDScreenManager
Window.size = [320, 600]

class ShopApp(MDApp):
    def build(self):
        # 返回ScreenManager作为应用根组件
        return self.load_all_kv_files()

    def load_all_kv_files(self):
        sm = MDScreenManager()
        sm.add_widget(Builder.load_file('login.kv'))
        sm.add_widget(Builder.load_file('home.kv'))
        # 设置默认显示登录页
        sm.current = 'shop'
        return sm

ShopApp().run()

2. 修正登录页kv文件的按钮事件

将"Sign Up"按钮的on_press事件改为使用root.manager,避免未定义变量错误:

# 替换原Sign Up按钮的on_press行
on_press: root.manager.current = 'sign_up'

注:若尚未创建sign_up页面,需后续补充对应的kv文件并添加到ScreenManager中,否则切换时会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:50:44