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

Replit中Tkinter文本变量无法更新问题求助

问题分析与解决方案

问题根源

你的cree_employes函数在创建完输入组件后,立刻调用StringVar.get()获取值并返回,这时候用户还没有机会修改输入框或选择菜单的内容,所以返回的始终是组件初始化时的默认值,而非用户修改后的内容。

比如这行代码:

Liste = [nom_employe.get(), typeEmploi.get(), nb_heures.get(), nb_pourboire.get()]

它在函数执行时就固定了值,后续用户的输入不会更新这个列表。

解决方法

方案1:返回StringVar对象,在需要时获取最新值

修改函数的返回值,把StringVar对象返回,而不是它们的当前值。这样在后续需要读取用户输入的时候,调用.get()就能拿到最新内容。

修改后的函数末尾:

# 返回StringVar对象而非立即获取的值
var_list = [nom_employe, typeEmploi, nb_heures, nb_pourboire]
return var_list, widgets

之后在需要获取用户输入的地方(比如提交按钮的回调函数里),这样处理:

# 假设你保存了每个员工的var_list
employee_vars, _ = cree_employes(i, n)
# 获取最新输入值
nom = employee_vars[0].get()
emploi_type = employee_vars[1].get()
heures = employee_vars[2].get()
pourboire = employee_vars[3].get()

方案2:返回一个可调用函数,动态获取最新值

如果希望保持返回列表的形式,可以返回一个函数,调用该函数时会实时获取当前输入值:

def get_employee_data():
    return [nom_employe.get(), typeEmploi.get(), nb_heures.get(), nb_pourboire.get()]

return get_employee_data, widgets

后续使用时:

get_data, _ = cree_employes(i, n)
latest_data = get_data()  # 此时获取的是用户修改后的最新值

额外优化点

你的widgets列表里重复添加了txtNombreHeures两次,建议修正:

widgets = [lblTitreSecondaire, lblTypeEmploi, lblNombreHeures, lblPourboire, lblNomEmploye, txtNombreHeures, txtPourboire, txtNomEmploye, optTypeEmploi]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:44:59