Python tkinter GUI程序点击按钮后始终输出None,无法获取输入框的姓名与年龄
问题原因&解决方案
嘿,我帮你找出问题啦!你这段代码点击按钮后打印None的原因有两个,咱们一步步拆解:
核心问题分析
- 变量保存的不是Entry组件对象:你把
tkinter.Entry()的创建和.grid()方法链式写在一起了,但.grid()方法的返回值是None,所以变量n和a实际上存的不是输入框组件,而是None——这就是打印出None的直接原因。 - 没有获取输入框的实际内容:就算你正确拿到了Entry组件对象,直接打印对象本身也得不到用户输入的文本,必须调用Entry的
get()方法才能取出里面的内容。
修复后的完整代码
import tkinter main_window = tkinter.Tk() # 先创建组件,再单独调用grid布局,避免链式调用丢失组件引用 tkinter.Label(main_window, text='WTF is your name').grid(row=0, column=0) tkinter.Label(main_window, text='Age').grid(row=1, column=0) # 拆分Entry创建与grid布局,让变量保存Entry实例 n = tkinter.Entry(main_window, width=50, borderwidth=5) n.grid(row=0, column=3) a = tkinter.Entry(main_window, width=50, borderwidth=5) a.grid(row=1, column=3) def on_click(): # 调用get()方法获取输入框的实际文本内容 name_input = n.get() age_input = a.get() print(f'Your name is {name_input}, and your age is {age_input}') tkinter.Button(main_window, text='Enter', command=on_click).grid(row=2, column=3) main_window.mainloop()
关键改动说明
- 拆分组件创建与布局:把
tkinter.Entry(...).grid(...)拆成两行,先创建Entry对象赋值给变量,再调用grid()做布局,这样变量就能正确引用输入框组件了。 - 使用
get()获取输入内容:在按钮点击的回调函数里,通过n.get()和a.get()取出用户输入的文本,再进行打印。
内容的提问来源于stack exchange,提问作者Namil Dharshan
相关产品推荐
相关产品推荐

