a、b两个窗口读取同一个json文件:通过a修改json,a能获取实时数据,b需要重启才能获取更新后的数据
import json
from pathlib import Path
import base64
class Setjson(object):
def writeJsonData(self, item, newdata):
self.jsonData = self.getJsonData()
i = 0
while i < len(item):
self.jsonData[item[i]] = newdata[i]
i = i + 1
#加密
self.jsonData = base64.b64encode(json.dumps(self.jsonData).encode("utf-8")).decode("utf-8")
path0 = Path(__file__).resolve()
with open(str(path0)[0:str(path0).rfind('\\')] + '\\basicfiles\\info.json', 'w') as dump_f:
json.dump(self.jsonData, dump_f)
@staticmethod
def getJsonData():
path0 = Path(__file__).resolve()
with open(str(path0)[0:str(path0).rfind('\\')] + '\\basicfiles\\info.json', 'r', encoding='utf8')as f:
#return json.load(f)
#解密
return json.loads(base64.b64decode(json.load(f)))
以上是调用json的方法,b窗口内调用getJsonData()的值一直是初始值,不会获取到a修改后的值
我猜想是需要释放内存?尝试过在a和b del 几个调用的变量结果没有变化
有没有方法能让b能实时获取json数据
代码完整发来我调试下看看
我的思路是
1.如果B窗口啥按钮也没有是自动获取json文件的 那就b窗口添加一个监听事件文件是否被修改,如果修改就自动读取
2.如果有按钮那你a窗口只要修改完保存,B窗口按钮读取就可以了
因为不知道你的B窗口到底是干啥的 所以最好详细说下