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

如何将Tkinter Entry用户输入存入字典?解决PY_VAR异常问题

解决Tkinter Entry输入存入字典的问题

你直接把StringVar对象存进字典,所以才会出现PY_VAR(数字)这种对象标识,而非用户输入的文本。另外expected_val_var.widget.get()是错误用法——StringVar本身没有widget属性,获取输入值根本不需要绕这一步。

正确修改方式

在回调函数里调用StringVar的get()方法,就能拿到用户输入的字符串内容,再把这个值存入字典即可。

修改后的代码:

def expected_callback(self, expected_val_var, index, mode):
    # 调用get()获取输入的文本值
    dictionary[self.row][3] = expected_val_var.get()

def dataType_callback(self, event):
    expected_val_var = StringVar()
    expected_val_var.trace("w", self.expected_callback)
    expected_val = Entry(self.root, width=20, textvariable=expected_val_var)
    expected_val.insert(0, "Expected value")
    expected_val.grid(row=self.row, column=self.col+2)

额外注意点

如果后续代码中self.row会被修改,回调触发时可能会用错字典的键。这种情况下可以通过lambda把当前行号绑定到回调里:

def expected_callback(self, expected_val_var, row):
    dictionary[row][3] = expected_val_var.get()

def dataType_callback(self, event):
    expected_val_var = StringVar()
    # 用lambda传递当前行号
    expected_val_var.trace("w", lambda *args: self.expected_callback(expected_val_var, self.row))
    expected_val = Entry(self.root, width=20, textvariable=expected_val_var)
    expected_val.insert(0, "Expected value")
    expected_val.grid(row=self.row, column=self.col+2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:48:16