2015-11-30 146 views
0

嗨,大家好我是在Python中用Tkinter製作一個溫度轉換器,它很好,但現在我得到了這個錯誤。我在這裏看到了這個錯誤的stackoverflow,我發現他們很多,但我不知道,所以我在這裏發佈我的代碼,看看你們是否可以幫助。當我點擊OptionMenu上的一個選項時,程序崩潰。 (om_input專門)TypeError:'NoneType'對象不可調用 - Python Tkinter

以下是錯誤:

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

它拋出另一個異常:

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

這裏是我的代碼片段:

This function is supposed to be called everytime the user selects an option in the OptionMenu in the GUI.

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) 

The vars to be used with the 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) 

Initialization of the 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() 
+2

請提供一個完整的工作程序,用最少量的代碼重現問題(請參閱http://stackoverflow.com/help/mcve) –

+0

這是您的整個追溯?我希望在實際的錯誤消息之前看到像'File「myfile.py這樣的行,第9行等。你有沒有削減什麼? – Kevin

+0

那麼,雖然我在一個最小程序上工作,程序似乎工作,現在我正在尋找什麼不同,但我不認爲什麼是。我削減了我認爲對於這個問題非常重要的部分。 – Memphys

回答

0

我解決了它,問題是,我沒有張貼在這裏,愚蠢的方法,我爲此道歉。

的方法是這樣的:

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

我通過Tkinter的單證去和閱讀有關STRINGVAR和trace()方法,我只是改變了 「W」 到 「U」,charmly工作。謝謝你的時間。