用Json在kivy android中保存变量

2024-04-27 20:19:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想保存一个变量(标签.text)在kivy中,对于android应用程序,当应用程序重新启动时,它应该将变量加载回标签.text. 在

我试图使用JsonStore保存变量https://kivy.org/docs/api-kivy.storage.html#

有没有更好的方法来保存变量?在

但是当我运行代码时,我得到了以下错误:

ValueError: No JSON object could be decoded

这是我的主.py文件:

from kivy.app import App
from kivy.storage.jsonstore import JsonStore
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window


class Test(BoxLayout):
    Window.clearcolor = (1, 1, 1, 1)
    def save(self):
        store = JsonStore('hello.json')
        store.put('tito', score=label.text)

class MyApp(App):
    def build(self):
        return Test()
    def on_start(self):
        store = JsonStore('hello.json')
        label.text = store.get('tito')['score']


if __name__ == '__main__':
    MyApp().run()

这是我的千伏文件:

^{pr2}$

以下是完整的错误消息:

 Traceback (most recent call last):
   File "main.py", line 25, in <module>
     MyApp().run()
   File "/usr/lib/python2.7/dist-packages/kivy/app.py", line 823, in run
     self.dispatch('on_start')
   File "kivy/_event.pyx", line 699, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7394)
   File "main.py", line 20, in on_start
     store = JsonStore('hello.json')
   File "/usr/lib/python2.7/dist-packages/kivy/storage/jsonstore.py", line 25, in __init__
     super(JsonStore, self).__init__(**kwargs)
   File "/usr/lib/python2.7/dist-packages/kivy/storage/__init__.py", line 133, in __init__
     self.store_load()
   File "/usr/lib/python2.7/dist-packages/kivy/storage/jsonstore.py", line 34, in store_load
     self._data = loads(data)
   File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
     return _default_decoder.decode(s)
   File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
   File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
     raise ValueError("No JSON object could be decoded")
 ValueError: No JSON object could be decoded

提前谢谢


Tags: storetextinfrompyselfjsoninit
1条回答
网友
1楼 · 发布于 2024-04-27 20:19:35

这个错误有点普通,但似乎您的JSON无效。您的JSON应该类似于:

{"tito": {"score": "3"}}

您可以在您的Test类中使用__init__方法在开始时加载Json,这比在本例中使用on_start方法要简单得多。在

另一方面,在尝试获取JSON文件和密钥之前,需要测试它是否存在。否则,您可能会收到一个KeyError异常。除此之外,你可以使用try。在

^{pr2}$

相关问题 更多 >