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

Tkinter中关联Entry组件输入值的Label无法正常显示如何解决

问题原因

你的代码存在2个直接导致异常的核心错误:

  • 调用StringVar的取值方法时漏写括号:代码中写的v.get没有执行方法调用,只是获取了方法对象本身,因此界面会直接打印方法的内存地址描述,也就是你看到的<bound method StringVar.get of <tkinter.StringVar object...>>内容。
  • 按钮的回调参数传值错误:代码中写的command=showmsg()会在界面初始化阶段就直接执行showmsg函数,而非将函数绑定为按钮点击的触发逻辑,最终按钮点击后不会按预期执行交互。

另外存在一个不影响当前报错、但会埋下后续bug的写法问题:你将控件.pack()的返回值直接赋值给了控件变量,而.pack()方法的返回值是None,后续如果需要操作label1、entrybox这些控件时,会因为变量值为None报错。

修复后的完整代码
import tkinter as tk
from tkinter import X

root = tk.Tk()
root.title("Testing this thing :D")
v = tk.StringVar()

# 拆分控件创建和布局逻辑,避免拿到None值
label1 = tk.Label(root,text="Write your name")
label1.pack()
entrybox = tk.Entry(root,font= ("Arial 12"),textvariable=v)
entrybox.pack(expand=True)

def showmsg():
    # 正确调用get()方法,补全括号
    label = tk.Label(root, text = f"Hello {v.get()}",font=("Arial 12"))
    label.pack()

# command传函数引用,不要加括号
button = tk.Button(root,font=("Arial 12"), command=showmsg,text="Done")
button.pack(fill= X)

root.mainloop()
关键修改点说明
  • 将字符串拼接处的v.get改为v.get(),正确执行取值方法拿到输入框内容
  • 将按钮参数command=showmsg()改为command=showmsg,传递函数引用实现点击触发
  • 拆分控件实例化和.pack()布局语句,保留控件对象的引用方便后续操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:12:22