You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 15:45:02