【问题标题】:Python Tkinter call a dictionary with a StringVar?Python Tkinter 用 StringVar 调用字典?
【发布时间】:2014-08-05 03:27:26
【问题描述】:

我正在使用 python 中的 tkinter,我有一个烦人的错误,我似乎无法修复,尽管答案可能很明显。

我试图用字符串调用字典,但由于某种原因,我得到了错误: 类型错误:不可散列类型:StringVar。这是与该问题有关的代码的 sn-p:

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 相关代码(例如 import、gpa = Tk()、StringVar、.set、mainloop())它可以工作,所以我认为这是一个 tkinter 相关问题。

【问题讨论】:

    标签: python string dictionary tkinter


    【解决方案1】:

    正如您必须调用StringVar 对象的set 方法一样,您还需要调用get 来检索str 数据。

    print weightsy[acadw.get()]
    

    字典不知道将您的对象转换为字符串,因此它会尝试获取与acadw 关联的值。你会得到一个TypeError 而不是KeyError,因为StringVar 对象恰好是不可散列的。

    【讨论】:

    • 谢谢,现在更有意义了。还在习惯 tkinter。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    相关资源
    最近更新 更多