2015-11-29 4 views
0

В следующем коде я пытаюсь открыть новое окно, нажав на кнопку. Одним из необходимых аргументов, переданных функции, которая открывает новое окно, является строка, взятая из метода entry.get(), но метод ничего не возвращает. Почему это происходит?Entry.get() ничего не возвращает tkinter - python 3.4

window = tk.Toplevel(self) 
doc = Document(self.entry_filepath.get()) 

entry_doc_id = tk.Entry(window, width=20) 
entry_doc_id.grid(sticky=W+E+N+S, row=0, column=1, columnspan=3) 

button_country_views = tk.Button(window, text="Views by country", command=partial(self.display_views_by_country, doc, entry_doc_id.get()), width=25)                
button_country_views.grid(row=1, column=1, sticky=W+E+N+S) 
+0

вероятно 'Entry.get()' вызывается только один раз при запуске программа. Определите функцию и назначьте ее команде 'command' или используйте' lambda' – furas

+0

, как бы я использовал 'lambda' в этом случае? – AutomEng

ответ

1

Entry.get() вызывается только один раз (по partial) при запуске программы.

Вы можете использовать lambda вместо partial

command=lambda:self.display_views_by_country(doc, entry_doc_id.get()) 

Или вы можете определить функцию и назначить его command

def my_function(): 
    self.display_views_by_country(doc, entry_doc_id.get()) 

command=my_function 
+0

Большое спасибо. Это сработало сразу. – AutomEng

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