Python 为什么我的json文件中的所有值都在更新?
我有一个按钮列表,当按下时,将值1添加到Python 为什么我的json文件中的所有值都在更新?,python,json,kivy,Python,Json,Kivy,我有一个按钮列表,当按下时,将值1添加到score。该按钮被视为screen\u two.ids.streak\u区域的子按钮。当我按下按钮时,它会更新json文件中所有按钮的score值。如何使它只更新一个按钮 这是我的密码: def add_score(self, obj): for child in reversed(self.root.screen_two.ids.streak_zone.children): name = child.text
score
。该按钮被视为screen\u two.ids.streak\u区域的子按钮
。当我按下按钮时,它会更新json文件中所有按钮的score
值。如何使它只更新一个按钮
这是我的密码:
def add_score(self, obj):
for child in reversed(self.root.screen_two.ids.streak_zone.children):
name = child.text
with open("streak.json", "r") as file:
read = json.load(file)
for key in read.keys():
if key == name:
with open("streak.json", "r+") as f:
data = json.load(f)
data[key]['score']+=1
f.seek(0)
json.dump(data, f, indent=4)
f.truncate()
json文件:
{
"one": {
"action": "one",
"delay": 1558824388.0762293,
"seconds": 60,
"score": 5,
"delta": 1558224388.0762293
},
"two": {
"action": "two",
"delay": 1558824393.8408294,
"seconds": 60,
"score": 5,
"delta": 1558224393.8408294
}
}
删除了子循环并生成
name=obj.text
代码:
您可以为子项运行
,
循环,以便为所有按钮执行此操作。可能在某些地方添加print()
,以查看变量中包含的内容以及执行的代码部分。如果变量read
中已经包含相同的数据,我不知道为什么要再次加载这些数据。您可以检查read.keys()中的onluif name():
,然后更改read[name][“score”]中的值,而不是键的
,然后打开文件再次写入所有数据。我不确定,但您应该检查obj
-也许您已经单击了obj
中的按钮,并且您不必使用for child
循环来为所有子级运行代码。感谢您删除了子循环!
def add_score(self, obj):
name = obj.text
with open("streak.json", "r") as file:
read = json.load(file)
for key in read.keys():
if key == name:
with open("streak.json", "r+") as f:
data = json.load(f)
data[key]['score']+=1
f.seek(0)
json.dump(data, f, indent=4)
f.truncate()