2015-11-30 2 views
0

Привет, ребята, я делаю конвертер температуры на основе Tkinter в Python, и все было хорошо, но теперь я получаю эту ошибку. Я посмотрел здесь на 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

Это все, что вы трассируете? Я ожидаю увидеть строки, такие как «Файл» myfile.py », строка 9' и таковые до фактического сообщения об ошибке. Вы что-то вырезали? – Kevin

+0

Ну, пока я работал над минимальной программой, программа, похоже, работала, теперь я ищу что-то другое, но я ничего не думаю. Я отрезал части, и я не думал, что это важно для проблемы. – Memphys

ответ

0

Я решил это, и проблема была в методе, который я не отправлял здесь, глупо, и я извиняюсь за это.

Метод был такой:

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

Я прошел через Tkinter документаций и читать о STRINGVAR и метод трассировки() и я только что изменил «ш» в «и», работал charmly. Спасибо за ваше время.

Смежные вопросы