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

tkinter Entry组件get()取值仅一个可打印另一个为空的问题排查

问题原因分析

核心问题是what_is_answer_entry_get的赋值时机错误:

  • 你在Entry组件初始化完成后立刻调用what_is_answer_entry.get()赋值给全局变量,此时用户还没有输入任何内容,所以变量内存储的是空字符串
  • get()方法是瞬时取值,只会返回调用那一刻输入框内的内容,不会自动同步后续用户输入的内容,所以即便之后用户输入了内容,全局变量里存储的还是最初的空值
  • 另一个变量ask_an_entry_get能正常输出,是因为它的赋值时机在用户输入完成后、打印操作执行前,所以能取到最新的输入内容
解决方案

方案1(推荐):实时取值,不提前缓存结果

不要把输入框内容提前存到全局变量,需要用到的时候直接调用Entry组件的get()方法即可,修改函数代码如下:

def answer_quizmaker_score():
    # 直接调用Entry组件的get方法,实时获取当前输入内容
    print(ask_an_entry.get())
    print(what_is_answer_entry.get())

方案2:更新全局变量的赋值时机

如果必须使用全局变量存储输入值,需要把赋值逻辑放到用户输入完成后、打印操作执行前,比如绑定输入框的键盘事件,每次用户输入就更新全局变量:

# 绑定输入事件,每次按键松开时更新全局变量
def update_entry_var(event):
    global what_is_answer_entry_get
    what_is_answer_entry_get = what_is_answer_entry.get()

what_is_answer_entry.bind("<KeyRelease>", update_entry_var)

也可以在触发answer_quizmaker_score的按钮点击逻辑里,先执行一次赋值再调用打印函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 02:18:00