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

Python Tkinter多标签页菜单点击后内容错误填充至末尾文本框求助

问题根源
  • 代码中使用了全局变量存储配置列表lsttiporeq/lstjsonreq和文本框对象request_box,每次调用makesubmenu创建新标签页时,全局变量都会被新的标签页资源覆盖,最终全局变量保存的始终是最后一个标签页的资源,因此所有按钮点击都会触发对最后一个文本框的操作。
  • 回调函数ChangConfWI完全依赖全局变量取值,无法识别当前按钮属于哪个标签页。
修复思路
  1. 移除所有相关全局变量声明,每个标签页的配置列表、文本框对象改为makesubmenu内的局部变量,仅属于当前标签页。
  2. 按钮点击回调通过默认参数绑定当前标签页的配置列表、文本框对象,直接传入ChangConfWI使用,不再依赖全局变量。
  3. 调整文本框创建顺序,确保按钮绑定回调时已经能拿到当前标签页的文本框对象。
修改后代码

makesubmenu 函数修改

def makesubmenu(tipo_de_conf, framename):
    frmbut = ttk.Frame(framename)
    frmbut.pack(side="top", anchor='nw')

    # 移除全局变量声明,改为当前标签页专属局部变量
    varconfbook = open("menu_dumps.txt", "r").readlines()
    lsttiporeq = []
    lsttitreq = []
    lstjsonreq = []
    lstexpectresq = []
    cont = 0

    # 先创建文本框,后续按钮回调才能拿到当前文本框对象
    frmtxtb2 = ttk.Frame(framename)
    frmtxtb2.pack(side="right", anchor='ne')
    ttk.Label(frmtxtb2, text="Response:").grid(column=4, row=1, padx=10, pady=10)
    request_box = ScrolledText(frmtxtb2, width=75, height=10, wrap=tk.WORD)
    request_box.grid(column=4, row=2, padx=10, pady=10, ipady=35)

    for line in varconfbook:
        if tipo_de_conf in line:
            tiporeq, titreq, jsonreq, expectresq = line.split('<->')
            lsttiporeq.append(tiporeq)
            lsttitreq.append(titreq)
            lstjsonreq.append(jsonreq)
            lstexpectresq.append(expectresq)
            # 回调绑定当前索引、当前标签页配置列表、当前标签页文本框
            ttk.Button(frmbut, width="20", text=titreq, command=lambda cont=cont, cur_json=lstjsonreq, cur_box=request_box: ChangConfWI(int(cont), cur_json, cur_box)).grid(column=0, row=cont, padx=10, pady=10)
        cont += 1

    return lsttiporeq, lsttitreq, lstjsonreq, lstexpectresq, request_box

ChangConfWI 函数修改

def ChangConfWI(tipreq, cur_json, cur_box):
        payload = cur_json[tipreq]
        cur_box.delete('1.0', END)
        cur_box.insert(tk.INSERT, payload)
        # 如需要返回其他业务参数可自行补充
        return payload, cur_box

内容的提问来源于stack exchange,提问作者ric

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:15:05