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

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()

关键改动说明

  1. 拆分组件创建与布局:把tkinter.Entry(...).grid(...)拆成两行,先创建Entry对象赋值给变量,再调用grid()做布局,这样变量就能正确引用输入框组件了。
  2. 使用get()获取输入内容:在按钮点击的回调函数里,通过n.get()和a.get()取出用户输入的文本,再进行打印。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:32:48