Python中如何通过tkinter按钮更新config.json文件的TOKEN键对应值
问题原因
- 仅修改了内存中加载的
config字典变量,没有将变更写入实际的config.json文件 - 回调函数传递的是输入框控件对象,没有获取控件内用户输入的实际值
- 若之前调用
json.dump未生效,通常是文件打开模式错误、路径不匹配、写入的内容不正确三类原因
修复后可用代码
import json from tkinter import Button, Entry, Frame, Tk # 这里为了示例完整性补充了基础窗口初始化,你可以根据自己原有代码调整 root = Tk() frame3 = Frame(root) frame3.pack() acctoken1field = Entry(frame3) acctoken1field.pack() # 加载配置文件,用r前缀避免Windows下反斜杠转义问题 with open(r"game\config.json", "r", encoding="utf-8") as f: config = json.load(f) acctoken1field.insert(0, config.get("TOKEN")) def replacetoken(entry_widget): # 1. 获取输入框内的实际文本 new_token = entry_widget.get().strip() # 2. 修改内存中的配置值 config["TOKEN"] = new_token # 3. 将修改后的配置写回本地文件 with open(r"game\config.json", "w", encoding="utf-8") as f: json.dump(config, f, ensure_ascii=False, indent=4) # 按钮绑定回调逻辑 acctoken1submit = Button(frame3, text='submit', command=lambda: replacetoken(acctoken1field)) acctoken1submit.pack() root.mainloop()
注意事项
- 打开文件写入时必须指定
w模式,否则无法写入内容 json.dump参数加ensure_ascii=False可以避免配置里的中文被转义为Unicode编码,加indent=4可以让文件格式更易读- 如果修改仍然不生效,可以打印配置文件的绝对路径,确认操作的是目标文件:
import os print(os.path.abspath(r"game\config.json"))
内容的提问来源于stack exchange,提问作者Legend_recalls
相关产品推荐
相关产品推荐

