Python Tkinter 如何用 StringVar 调用字典?

1 投票
1 回答
2640 浏览
提问于 2025-04-18 16:00

我正在用Python的tkinter库做一些工作,但遇到了一个烦人的错误,怎么也解决不了,虽然答案可能很明显。

我想用一个字符串来调用一个字典,但不知道为什么会出现这个错误:类型错误:不可哈希类型:StringVar。下面是出现问题的代码片段:

from Tkinter import *
gpa = Tk()

weightsy = {'0': 2, '.1': 6, '.25':.2, '.5':.56, '.75':75, '1':12}
acadw = StringVar()
acadw.set(".1")
print (weightsy.get(acadw)) #Here is the issue; it should return the integer 6.

mainloop()

补充一下,如果我把和tkinter相关的代码(比如导入、gpa = Tk()、StringVar、.set、mainloop())去掉,代码就能正常运行,所以我觉得这个问题和tkinter有关。

1 个回答

3

就像你需要调用 StringVar 对象的 set 方法来设置字符串数据一样,你也需要调用 get 方法来获取这个字符串数据。

print weightsy[acadw.get()]

字典不知道怎么把你的对象转换成字符串,所以它试图获取与 acadw 相关联的值。因为 StringVar 对象是不可哈希的,所以你会得到一个 TypeError 错误,而不是 KeyError 错误。

撰写回答