json商店没有正确更新值kivy

时间:2014-04-30 15:14:15

标签: python json python-2.7 kivy

我在Json文件中首先使用json存储从当前代码的函数中插入一个值,然后使用来自不同代码的函数,但是当我第二次更新值时,它会重置我在第一次设置的值代码。

我相信您会从下面的示例代码中更好地理解它:

我有2个文件:

  1. jsonstore.py - 将进一步导入importmodule,即文件2
  2. importedmodule.py
  3. 请看下面两个文件的代码。

    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))
    

    当我运行第一个文件代码i.t时我想要那个jsonstore.py其输出应为:

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

    但我的输出为

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

    我不确定为什么不将10的值更新为10。不确定什么是错的或我做错了什么。任何人都可以帮助我或建议。?

1 个答案:

答案 0 :(得分:2)

您正在创建两个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))