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

Tkinter中Entry控件的get()方法始终返回0问题求助

问题原因及解决方法

你的代码存在两个核心问题:

  • 值的获取时机错误:你在程序启动时就调用entry1.get()把值存到num_of_diners里,这时候输入框还没输入内容,拿到的是IntVar的初始默认值0。之后点击按钮时,用的还是这个一开始就固定的0,不会去读取输入框的最新内容。
  • 重复创建组件的隐患:每次点击按钮都新建一个Label,会导致多个Label重叠显示,界面会越来越混乱。

修正后的代码

import tkinter as tk
from tkinter import FLAT

window1 = tk.Tk()
window1.geometry("500x720+750+0")

entry1 = tk.IntVar()
# 把Entry的创建和布局分开,避免变量被赋值为None(Tkinter布局方法返回None)
e1 = tk.Entry(window1, width=8, fg="darkblue", textvariable=entry1, font=('secular one', 13))
e1.place(x=20, y=60)

# 提前创建结果Label,后续直接更新文本
result_label = tk.Label(window1, font=('secular one', 20))
result_label.place(x=300, y=510)

def get_value():
    # 每次点击按钮时,才去获取输入框的最新值
    num_of_diners = entry1.get()
    # 更新已有Label的文本,而非重复创建
    result_label.config(text=num_of_diners)

tk.Button(window1, text="calculate price", command=get_value, font=('secular one', 18), relief=FLAT).place(x=20, y=500)

window1.mainloop()

关键修改点

  • 将entry1.get()移到get_value函数内部,确保每次点击按钮都读取输入框的实时内容。
  • 提前创建结果Label,用config()方法更新文本,避免组件重复叠加。
  • 拆分Entry的创建与布局代码,避免变量被赋值为None(这是Tkinter的常见坑)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:05:17