2015-07-28 5 views
0

Классы и другие файлы найдены here Нужно ли использовать функцию лямбда? Я обычно получают ошибки вдоль линий непосредственной ниже ошибки и дальнему большинство ошибок, которые были бы «object of type 'NoneType' has no len()»Объект типа 'NoneType' не имеет len()

Traceback (most recent call last): 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/ggwrksv0.03.py", line 32, in <module> 
    button_1 = Button(mw, text="Submit", command=print_function()) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/ggwrksv0.03.py", line 21, in print_function 
    synonyms = thesaurus.get_synonyms(define_me) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/py2mwapi.py", line 60, in get_synonyms 
    synonyms = self._parse_xml_for_synonyms(result) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/py2mwapi.py", line 41, in _parse_xml_for_synonyms 
    main_entry = self._get_xml_root(xml) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/py2mwapi.py", line 32, in _get_xml_root 
    if not len(first_entry): 
TypeError: object of type 'NoneType' has no len() 



from Tkinter import * 
#import settings 
import py2mwapi 

APIKEY = 'f1778399-c8c8-48fd-b6d8-4afd40ce0530' 
APIKEY_T = 'a39b602f-93d0-491f-b4e7-2730b9cea4c2' 

################################################# 

def copytext(): 
    #print entry_1.get() 
    entry_2.delete(0, END) #remove any previous contents 
    entry_2.insert(0, entry_1.get()) 

def print_function(): 
    dictionary = py2mwapi.DictionaryAPI(APIKEY) 
    thesaurus = py2mwapi.ThesaurusAPI(APIKEY_T) 
    define_me = "zeus" 

    definition = dictionary.get_definition(define_me) 
    synonyms = thesaurus.get_synonyms(define_me) 
    related_words = thesaurus.get_related_words(define_me) 
    print define_me 
################################################# 

mw = Tk() 
label_1 = Label(mw, text="Enter some text: ") 
entry_1 = Entry(mw) 
label_2 = Label(mw, text='Output: ') 
entry_2 = Entry(mw) 

button_1 = Button(mw, text="Submit", command=print_function()) 



label_1.grid(row=0, column=0, sticky=W) 
entry_1.grid(row=0, column=1) 
label_2.grid(row=1, column=0, sticky=W) 
entry_2.grid(row=1, column=1) 
button_1.grid(row=3, columnspan=2, sticky=E) 


mainloop() 

Это была моя предыдущая попытка, которая не работает, либо:

from Tkinter import * 
import py2mwapi 
import settings 



################################################# 

def copytext(): 
    #print entry_1.get() 
    entry_2.delete(0, END) #remove any previous contents 
    entry_2.insert(0, entry_1.get()) 
################################################# 

mw = Tk() 

label_1 = Label(mw, text="Enter some text: ") 
entry_1 = Entry(mw) 
label_2 = Label(mw, text='Output: ') 
entry_2 = Entry(mw) 
button_1 = Button(mw, text="Submit", command=copytext) 

define_me = entry_1.get() 

dictionary = py2mwapi.DictionaryAPI(settings.APIKEY) 
thesaurus = py2mwapi.ThesaurusAPI(settings.APIKEY_T) 

definition = dictionary.get_definition(define_me) 
synonyms = thesaurus.get_synonyms(define_me) 
related_words = thesaurus.get_related_words(define_me) 

label_1.grid(row=0, column=0, sticky=W) 
entry_1.grid(row=0, column=1) 
label_2.grid(row=1, column=0, sticky=W) 
entry_2.grid(row=1, column=1) 
button_1.grid(row=3, columnspan=2, sticky=E) 


mainloop() 

ошибки:

Traceback (most recent call last): 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/test.py", line 28, in <module> 
    definition = dictionary.get_definition(define_me) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/py2mwapi.py", line 89, in get_definition 
    definition = self._parse_xml_for_def(result) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/py2mwapi.py", line 77, in _parse_xml_for_def 
    main_entry = self._get_xml_root(xml) 
    File "/home/tech-ministry/dictionary_Merriam-Webster_API/py2mwapi.py", line 32, in _get_xml_root 
    if not len(first_entry): 
TypeError: object of type 'NoneType' has no len() 
+0

Ваша ошибка показывает объект с именем 'first_entry' но ваш код не показывает такого объекта. –

ответ

1

Вам необходимо подключить кнопку к функции, а не к функции. Удалите ().

button_1 = Button(mw, text="Submit", command=print_function) 
                 ^
1

ошибка говорит вам, что это неправильно - вы пытаетесь вызвать функцию len на то, что имеет значение None. Вы должны выяснить, почему для first_entry установлено значение None.

Если это совершенно справедливо для first_entry быть None, вы можете изменить свой код, чтобы обрабатывать этот случай:

if first_entry is not None and len(first_entry): 
    ... 
+0

Если он проверяет, не является ли длина не 0, то вместо проверки на «Нет» это не может быть сведено до «if first_entry:'? Однако я не могу определить, находится ли эта строка в коде OP или в стороннем API. – TigerhawkT3

+0

'first entry' не имеет значения, мне нужно запросить у пользователя слово для позднего определения через API, как я могу упорядочить ввод пользователя, назначить переменную, а затем определить, я все время получаю нулевое значение add I have not выяснили, как принять ответ пользователя с 'tkinter' – phillipsK

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