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

Tkinter点击按钮传递控件名 实现修改未命名按钮文本问题求助

Tkinter按钮点击修改对应文本问题修复

原有代码核心错误

  • 根窗口实例化错误:ttk是主题控件包,顶层窗口需要实例化tkinter.Tk()而非ttk()
  • 回调传参错误:lambda传递的是按钮的name字符串,不是按钮实例对象,无法直接调用config()方法修改属性
  • 目标按钮无引用留存:需要修改文本的目标按钮创建后没有保存实例,后续无法定位操作
  • 布局错误:两个按钮都放在同一行同一列会发生重叠,且存在r.ow这类拼写错误
  • 控件参数错误:ttk.Button没有height参数,如需调整高度可使用padding参数,或改用原生tk.Button

修复后可运行代码

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.title("按钮修改测试")

# 存储需要修改文本的目标按钮实例
target_buttons = []

def gonow(index):
    # 直接通过索引拿到对应目标按钮修改文本
    target_buttons[index].config(text="clicked")

for x in range(10):
    # 创建要修改文本的目标按钮,放在第0列
    target_btn = ttk.Button(root, width=30, padding=(0, 15), text=str(x))
    target_btn.grid(column=0, row=x, padx=10, pady=5)
    target_buttons.append(target_btn)
    
    # 创建触发用的OK按钮,放在第1列,lambda传入当前循环的x作为索引
    ttk.Button(root, width=30, padding=(0, 15), text="OK", command=lambda idx=x: gonow(idx)).grid(column=1, row=x, padx=10, pady=5)

if __name__ == "__main__":
    root.mainloop()

针对你更新的业务代码的适配说明

  • 你现有的代码已经把按钮实例存入了buttonslst列表,后续需要修改对应按钮文本时,直接通过索引取出列表中的按钮实例调用config()方法即可
  • 你在OK按钮的savetoxls回调中已经传入了fvarbut参数,也就是对应要修改的按钮实例,直接在savetoxls函数中添加fvarbut.config(text="你想要修改的文本")即可实现需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:15:02