kivy中的json存储值未正确更新

2 投票
1 回答
995 浏览
提问于 2025-04-18 04:54

我在一个Json文件里插入一个值,先是通过当前代码里的一个函数,然后又通过另一个代码里的函数来插入。但是,当我第二次更新这个值的时候,它会把我第一次设置的值重置掉。

我相信你看下面的示例代码会更明白:

我有两个文件:

  1. jsonstore.py - 这个文件会导入第二个文件 importedmodule
  2. importedmodule.py

请看下面两个文件的代码。

jsonstore.py

from kivy.storage.jsonstore import JsonStore
import importedmodule as jb

JsonFileName = 'a.json'
store = JsonStore(JsonFileName)

def hello():
    store.put('ten', v=int(10))

hello()
jb.hello()

importedmodule.py

from kivy.storage.jsonstore import JsonStore

JsonFileName = 'a.json'
store = JsonStore(JsonFileName)

def hello():
    store.put('twenty', v=int(20))

我希望当我运行第一个文件的代码,也就是 jsonstore.py 时,它的输出应该是:

{"twenty": {"v": 20}, "ten": {"v": 10}}

但是我得到的输出是

{"twenty": {"v": 20}, "ten": {"v": 0}}

我不确定为什么它没有把值 ten 更新为 10。我不知道哪里出错了,或者我做错了什么。有人能帮我或者给点建议吗?

1 个回答

3

你正在创建两个 JsonStore。这就像在两个不同的编辑器中打开同一个文本文件,然后对每个文件进行修改并保存 - 只有一个文件会被保存,另一个会被覆盖。建议你在每个方法中使用同一个存储。

jsonstore.py

from kivy.storage.jsonstore import JsonStore
import importedmodule as jb

JsonFileName = 'a.json'
store = JsonStore(JsonFileName)

def hello(s):
    s.put('ten', v=int(10))

hello(store)
jb.hello(store)

importedmodule.py

def hello(s):
    s.put('twenty', v=int(20))

撰写回答