为什么此答案中有en?

时间:2018-11-25 15:29:27

标签: python tkinter syntax

一个没有类的简单示例:

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()

以上是该问题的答案:Why is Tkinter Entry's get function returning nothing?

所以我检查了代码,它起作用了。但是-我不明白为什么在“ return_entry”括号中有一个“ en”。在代码的任何其他部分中都没有提到它,所以我认为它是语法-但是出于什么目的?

如果我没有看到OP的帐户已经停用了2年,我会在上述回答中留下评论

1 个答案:

答案 0 :(得分:1)

通过bind绑定到小部件的回调函数将事件对象作为参数。

我修改了您的打印声明,如下所示:

 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