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

Python Kivy运行报Invalid instance in App.root错误如何解决?

错误原因分析

Exception('Invalid instance in App.root')

  • Kivy框架中App类的build方法需要返回继承自Widget类的实例对象作为根组件,你当前代码中build方法返回的是layout类本身,没有进行实例化操作,不符合Kivy的参数要求,因此触发该异常。
  • 额外隐藏问题:你自定义的layout类中仅创建了用户名、密码输入框对象,没有调用add_widget方法将两个输入框添加到布局中,即使解决实例化问题后运行也不会显示输入框组件。
解决方案
  1. 修改Myapp类的build方法,将返回的layout类改为实例化后的对象,即把return layout改为return layout()
  2. 在layout类的__init__方法末尾补充添加输入框到布局的代码:
self.add_widget(self.username)
self.add_widget(self.password)

(可选优化:给密码输入框添加password=True参数,输入内容会自动隐藏,符合密码框使用习惯)

修正后完整可运行代码
import kivy
from kivy.app import App
from kivy.uix.label import Label 
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput

class layout(GridLayout):
    def __init__(self, **kwargs):
        super(layout, self).__init__(**kwargs)
        self.cols = 2
        self.add_widget(Label(text="Username= "))
        self.username = TextInput(multiline=False)
        self.add_widget(self.username)
        self.add_widget(Label(text="Password= "))
        self.password = TextInput(multiline=False, password=True)
        self.add_widget(self.password)

class Myapp(App):
    def build(self):
        return layout()

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

内容的提问来源于stack exchange,提问作者Atishay Ritul Patwa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:54:04