Почему в этом ответе есть ан? - PullRequest
0 голосов
/ 25 ноября 2018

Простой пример без классов:

from tkinter import *    
master = Tk()

# Create this method before you create the entry
def return_entry(en):
    """Gets and prints the content of the entry"""
    content = entry.get()
    print(content)  

Label(master, text="Input: ").grid(row=0, sticky=W)

entry = Entry(master)
entry.grid(row=0, column=1)

# Connect the entry with the return button
entry.bind('<Return>', return_entry) 

mainloop()

Выше был ответ на этот вопрос: Почему функция get в Tkinter Entry ничего не возвращает?

Итак, я проверилкод и это сработало.Однако я не понимаю, почему в скобках return_entry есть «en».Он не упоминается ни в каких других частях кода, поэтому я думаю, что это синтаксис, но для чего?

Я бы оставил комментарий к указанному ответу, если бы не видел аккаунт этого ОП.неактивен 2 года

1 Ответ

0 голосов
/ 25 ноября 2018

Функция обратного вызова, привязанная к виджету (-ам) посредством привязки, принимает в качестве параметра объект события.

Я изменил ваш оператор печати следующим образом:

 print("Event Object: ", en.widget, en, "\nResult: ", content)

После ввода 'Test{Return} 'в созданное окно производится следующее:

Event Object:  .!entry <KeyPress event keysym=Return keycode=13 char='\r' x=52 y=8>
Result:  Test

Объект события может использоваться для определения того, какая обработка требуется.В вашем случае это не актуально, но требуется механизмом обратного вызова.Событие происходило в виджете.! Entry, было событием KeyPress с другими показанными характеристиками.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...