Kivy - 获取并显示数据

时间:2017-12-19 22:05:51

标签: python kivy

背景

我使用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)


enter image description here

当我这样做以确保List的长度时,它看起来很好并且输出看起来像

Label:
      text: str(len(root.classification))

enter image description here

然而当我尝试访问列表中的各个元素时

Label:
      text: root.classification[0]   

抛出一个

  

IndexError:列表索引超出范围

。我也尝试将其转换为列表并执行

Label:
      text: list(root.classification)[0]

但它也犯了同样的错误。所以它显示了7的长度,当我访问第一个元素时,它会抛出一个超出范围的错误?

1 个答案:

答案 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中的工作方式