scout2030 2022-09-30 12:07 采纳率: 0%
浏览 30

两个tk窗口调用同一个json需要重启才能获取正确数据

问题遇到的现象和发生背景

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条回答 默认 最新

  • Ko-walski 2022-09-30 12:32
    关注
    代码完整发来我调试下看看
    
    
    我的思路是
      1.如果B窗口啥按钮也没有是自动获取json文件的 那就b窗口添加一个监听事件文件是否被修改,如果修改就自动读取
      2.如果有按钮那你a窗口只要修改完保存,B窗口按钮读取就可以了
    
    因为不知道你的B窗口到底是干啥的  所以最好详细说下
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 9月30日
  • 创建了问题 9月30日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?