TypeError:' NoneType'对象不可调用 - Python Tkinter

时间:2015-11-30 21:10:54

标签: python tkinter

大家好我在Python中制作了基于Tkinter的温度转换器,这一切都很好,但现在我收到了这个错误。我在这里看了stackoverflow这个错误,我找到了很多,但我无法弄清楚,所以我在这里发布我的代码,看看你们是否可以提供帮助。当我单击OptionMenu上的选项时,程序会完全崩溃。 (具体是om_input)

这是错误:

Traceback (most recent call last):
TypeError: 'NoneType' object is not callable

它引发了另一个例外:

AttributeError: 'StringVar' object has no attribute '_report_exception'

以下是我的代码片段:

  

每当用户在GUI中的OptionMenu中选择一个选项时,就应调用此函数。

def check_entry():

if temperature_input.get() == "Celsius":
    celsius_converter(value_entry.get(), temperature_output.get(), output_entry)

elif temperature_input.get() == "Kelvin":
    kelvin_converter(value_entry.get(), temperature_output.get(), output_entry)

else:
    fahrenheit_converter(value_entry.get(), temperature_output.get(), output_entry)
  

与OptionMenus

一起使用的变量
root = Tk()
temperature_list = ["Celsius", "Kelvin", "Fahrenheit"]    

temperature_input = StringVar(root)
temperature_input.set(temperature_list[0])

temperature_output = StringVar(root)
temperature_output.set(temperature_list[0])

output_entry = Entry(root, state=NORMAL)
  

OptionMenus的初始化

om_input = OptionMenu(root, temperature_input, *temperature_list, command=check_entry)
om_output = OptionMenu(root, temperature_output, *temperature_list, command=check_entry)
root.mainloop()

1 个答案:

答案 0 :(得分:0)

我解决了它,问题在于我没有在这里发布的方法,愚蠢的,我为此道歉。

方法就是这样:

def update_entry():
    temp_input.trace("w", check_entry())
    root.after(1, update_entry)

我浏览了Tkinter文档并阅读了有关StringVar和trace()方法的内容,我刚刚更改了" w"到了"你",工作得很好。谢谢你的时间。