Python Tkinter 如何用 StringVar 调用字典?
我正在用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
错误。