Python 自定义事件:TypeError:';非类型';对象不可下标
我使用Kivy 1.8.0,并尝试使用自定义事件来管理yesNo弹出窗口。此代码是在internet上找到的。我只找到了这个例子,我想修改这个代码,使多弹出管理,但我有错误时,运行它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
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