【发布时间】:2015-02-02 16:16:35
【问题描述】:
我在 python(Tkinter) 中创建了一个程序,它将用户名和密码作为输入,以及一个按钮,当按下该按钮时,将通过一个检查用户名和密码并进一步运行程序的函数。我想要这样,而不是单击按钮,用户按下“Enter”键,然后执行按钮的功能。请帮忙。
【问题讨论】:
我在 python(Tkinter) 中创建了一个程序,它将用户名和密码作为输入,以及一个按钮,当按下该按钮时,将通过一个检查用户名和密码并进一步运行程序的函数。我想要这样,而不是单击按钮,用户按下“Enter”键,然后执行按钮的功能。请帮忙。
【问题讨论】:
您可以使用某种方法在Entry 小部件上绑定<Return> 事件(这将执行您想要的操作):
# binding <Return> event
import tkinter as tk
import tkinter.messagebox as msg
def show(event=None): # handler
msg.showinfo('name', 'Your name is ' + inp.get())
m = tk.Tk()
prompt = tk.Label(m, text='Name: ')
prompt.pack(fill='x', side='left')
inp = tk.Entry(m)
inp.bind('<Return>', show) # binding the Return event with an handler
inp.pack(fill='x', side='left')
ok = tk.Button(m, text='GO', command=show)
ok.pack(fill='x', side='left')
m.mainloop()
如果您想了解更多关于 events 和 bindings 的信息,请参阅此effbot's page,这很容易理解。
【讨论】:
我相信您会希望将密钥绑定到您的处理程序:frame.bind('<Return>', some_handler)。
【讨论】:
对我来说,对函数的正常绑定不起作用。可能是因为我在一个类中使用它,所以我使用了 Lambda 函数并且它有效。代码如下:
inp.bind('', lambda _: show())
【讨论】: