【问题标题】:json Store not updating values correctly kivyjson Store没有正确更新值kivy
【发布时间】:2014-04-30 15:14:14
【问题描述】:

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

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

我有 2 个文件:

  1. jsonstore.py - 将进一步导入文件2的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}}

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

【问题讨论】:

    标签: python json python-2.7 kivy


    【解决方案1】:

    您正在创建两个JsonStores。这就像在两个单独的编辑器中打开同一个文本文件,然后进行更改并保存文件的每个副本 - 只会保存一个副本,而另一个将被覆盖。尝试对每种方法使用相同的商店。

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

    【讨论】:

    • 这工作......如果我在文件 2 的函数中打开存储文件也可以工作。谢谢!!
    猜你喜欢
    • 2016-08-26
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多