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

如何解决Tkinter中Entry调用get报NoneType错误,实现Hello后输出输入值

错误根源

Tkinter的布局方法pack()、grid()、place()的返回值均为None,你创建输入框时直接在实例化后链式调用pack()并赋值给变量H,导致H实际存储的是None而非输入框实例,调用get()方法时自然触发属性错误。同时原有代码中clickme函数内部代码未做缩进,还会额外触发语法错误。

修改方案

  • 拆分输入框的实例化和布局操作:先创建Entry实例赋值给H,再单独调用H.pack()完成布局
  • 修正clickme函数的缩进
  • 可选优化:提前创建结果标签,点击时仅更新文本内容,避免反复生成新的标签组件

修正后完整代码

如果需要保留每次点击都生成新标签的逻辑,可使用以下版本:

from tkinter import *
root = Tk()

root.title("Matchstick Game")
# 若无match.ico文件可注释掉下一行避免报错
# root.iconbitmap("match.ico")
root.geometry("1000x580")

# 拆分实例化和布局步骤
H = Entry(root, width = 80, fg = 'red')
H.pack()

def clickme():
    mylabel = Label(root, text = "Hello" + H.get())
    mylabel.pack()

my_button = Button(root, text = "whats your name", 
padx=10,pady=10,bg='white',fg='green',command=clickme)
my_button.pack()

root.mainloop()

如果希望每次点击仅更新同个标签的内容,可使用优化版本:

from tkinter import *
root = Tk()

root.title("Matchstick Game")
# root.iconbitmap("match.ico")
root.geometry("1000x580")

H = Entry(root, width=80, fg='red')
H.pack()

# 提前创建结果标签
result_label = Label(root)
result_label.pack()

def clickme():
    result_label.config(text="Hello" + H.get())

my_button = Button(root, text="whats your name", 
padx=10, pady=10, bg='white', fg='green', command=clickme)
my_button.pack()

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:57:04