Python 自定义事件:TypeError:';非类型';对象不可下标

Python 自定义事件:TypeError:';非类型';对象不可下标,python,kivy,Python,Kivy,我使用Kivy 1.8.0,并尝试使用自定义事件来管理yesNo弹出窗口。此代码是在internet上找到的。我只找到了这个例子,我想修改这个代码,使多弹出管理,但我有错误时,运行它 import kivy from kivy.app import App from kivy.lang import Builder from kivy.uix.gridlayout import GridLayout from kivy.uix.popup import Popup from kivy.prope

我使用Kivy 1.8.0,并尝试使用自定义事件来管理yesNo弹出窗口。此代码是在internet上找到的。我只找到了这个例子,我想修改这个代码,使多弹出管理,但我有错误时,运行它

import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.uix.popup import Popup
from kivy.properties import StringProperty

Builder.load_string('''
<ConfirmPopup>:
    cols: 1
        Label:
            text: root.text
        GridLayout:
            cols: 2
            size_hint_y: None
            height: '44sp'
            Button:
                text: 'Yes'
                on_release: root.dispatch('on_reponse_user','yes')
            Button:
                text: 'No'
                on_release: root.dispatch('on_reponse_user', 'no')
''')
运行此代码时出现以下错误:

 Traceback (most recent call last):
   File "F:\Kivy-1.8.0\test_event.py", line 24, in <module>
     ''')
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1491, in load_string
     parser = Parser(content=string, filename=fn)
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1049, in __init__
     self.parse(content)
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1122, in parse
     objects, remaining_lines = self.parse_level(0, lines)
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1271, in parse_level
     if current_property[:3] == 'on_':
 TypeError: 'NoneType' object is not subscriptable
回溯(最近一次呼叫最后一次):
文件“F:\Kivy-1.8.0\test\u event.py”,第24行,在
''')
文件“F:\Kivy-1.8.0\Kivy\Kivy\lang.py”,第1491行,装入字符串
解析器=解析器(内容=字符串,文件名=fn)
文件“F:\Kivy-1.8.0\Kivy\Kivy\lang.py”,第1049行,在\uuu init中__
self.parse(内容)
文件“F:\Kivy-1.8.0\Kivy\Kivy\lang.py”,第1122行,在parse中
对象,剩余的_行=self.parse_级别(0,行)
文件“F:\Kivy-1.8.0\Kivy\Kivy\lang.py”,第1271行,解析级
如果当前_属性[:3]=“on_u”:
TypeError:“非类型”对象不可下标

我不知道为什么自定义事件出错。与Kivy中的文档一样,可以添加自定义事件。

错误肯定会在Kivy解析器中抛出,这表明错误在您尝试加载的字符串中。这看起来像是字符串中的缩进问题


如果示例取自GitHub代码格式化程序可能隐藏的代码片段,那么该代码片段中的缩进级别混合可能有点奇怪。如果缩进与该页面上的缩进类似,请尝试复制您发布的代码片段,使其完全符合此处的格式,然后查看是否可以修复问题

异常名称表明
当前的\u属性
,您应该查看它。顺便说一句,为什么你的活动名称
“on\u response\u user”
?它是否应该在用户的响应上
?如果该字符串在Kivy中除了名称之外还有其他意义,那么这可能就是问题的根源

我在笔记本电脑上也遇到了同样的问题,但当我在安卓系统上尝试同样的代码时,它工作正常。
只需使用kivy launcher和python在android中尝试这段代码就可以了。在我的例子中,我通过查看我的kv文件,发现按钮函数中缺少一个选项卡,从而解决了这个问题。因此按钮未链接到布局:


不确定是否与缩进有关。我提取了kv文件中的字符串文本,并检查了每个缩进部分。同样的问题,但是
标签
的缩进级别和
测试:root.text
的缩进级别之间有四到八个空格吗?是的,是的,最好!!!问题在于标签和下面每一行的位置。从早上我试图解决这个错误开始…“on_response_user”只是我定义的一个名称。问题是压痕。
 Traceback (most recent call last):
   File "F:\Kivy-1.8.0\test_event.py", line 24, in <module>
     ''')
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1491, in load_string
     parser = Parser(content=string, filename=fn)
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1049, in __init__
     self.parse(content)
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1122, in parse
     objects, remaining_lines = self.parse_level(0, lines)
   File "F:\Kivy-1.8.0\kivy\kivy\lang.py", line 1271, in parse_level
     if current_property[:3] == 'on_':
 TypeError: 'NoneType' object is not subscriptable