大家好我在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()
答案 0 :(得分:0)
我解决了它,问题在于我没有在这里发布的方法,愚蠢的,我为此道歉。
方法就是这样:
def update_entry():
temp_input.trace("w", check_entry())
root.after(1, update_entry)
我浏览了Tkinter文档并阅读了有关StringVar和trace()方法的内容,我刚刚更改了" w"到了"你",工作得很好。谢谢你的时间。