背景
我使用UrlRequest
从服务器获取了一些数据,看起来像这样(响应)
{"class":["neg",0,1,0,0,0,1]}
我想在Label上显示上面的列表和元素。为此,我在我的Widget类中创建了一个classification = ListProperty([])
,我在其中通过
def got_json(self, req,result):
self.classification = result['class']
点。
问题
当我这样做以显示上面的列表时,一切看起来都很好,输出看起来像img
Label:
text: str(root.classification)
当我这样做以确保List的长度时,它看起来很好并且输出看起来像
Label:
text: str(len(root.classification))
然而当我尝试访问列表中的各个元素时
Label:
text: root.classification[0]
抛出一个
IndexError:列表索引超出范围
。我也尝试将其转换为列表并执行
Label:
text: list(root.classification)[0]
但它也犯了同样的错误。所以它显示了7的长度,当我访问第一个元素时,它会抛出一个超出范围的错误?
答案 0 :(得分:0)
感谢@kovak在Kivy IRC频道上做了
Label:
text: root.classification[0] if len(root.classification) > 0 else 'empty list'
修好了。事实证明,当我声明classification = ListProperty([])
时,它还会评估该初始[]
空列表,直到从服务器收到数据,无论多么短,因此在{{1}时索引AnyList[0]
}为空可能会引发AnyList
错误。虽然Index Out of Range
工作正常,但这是因为属性在Kivy中的工作方式