[英]Binding button to subprogram with a key
import tkinter as tk
win = tk.Tk()
win.resizable('False', 'False')
#functions
def entered(): #Receives input by the user and deletes what it has written.
value = entry.get()
entry.delete(0,'end')
def delete_insert(event):#Deletes what it's written by default in the entry widget.
entry.delete(0, 'end')
entry.config(fg = 'black')
def add_insert(event):
entry.insert(0, 'Click Here')
frame = tk.Frame(win)
frame.grid(column = 0, row = 0)
button_entry = tk.Button(frame)
button_entry.pack(side = 'right')
button_entry.config(text = 'Buscar', command = entered)
button_entry.bind('Control-Enter', entered) #Keep this line in mind please.
entry = tk.Entry(frame)
entry.pack(side = 'right', padx = 5)
entry.insert(0,'Click Here') #Default text in entry widget.
entry.bind('<FocusIn>', delete_insert)
entry.bind('<FocusOut>', add_insert)
win.mainloop()
按下Enter
时将button_entry
与 enter entered()
子程序绑定的代码行似乎不起作用。
button_entry.bind('<Control-Enter>', entered)
为什么不? 当entered()
子程序运行时,它会删除在entry
小部件中插入的文本
def entered(event):
....
entry.delete(0, 'end')
....
entry.insert(0,'Click here')
因此,我的目标是,当按钮button_entry
被Enter
键激活时,它运行子程序entered()
。 因此,它会删除用户在entry
中插入的文本。
我将参数event
添加到entered()
中,如下所示entered(event)
。 与其他功能一样,绑定将起作用。 不幸的是,当您单击button_entry
时,您会收到以下错误:
TypeError: entered() missing 1 requiered positional argument: 'event'
虽然,如果您单击Enter
(键盘上的键),什么也不会发生,或者至少看起来像这样,因为我绑定到button_entry
的子程序没有执行
我想要完成的事情类似于你在谷歌搜索时所做的事情,你在搜索引擎中输入你想要的内容,然后点击键盘上的输入。
两个错误,您的绑定密钥错误,您的 function 调用似乎也错误。 再加上你正在绑定到按钮,那么它需要按钮有焦点,只有这样bind
才会起作用。 所以你的代码是:
def entered(event=None):
value = entry.get()
entry.delete(0,'end')
entry.bind('<Return>',lambda event: entered()) # Bind the enter key to the entry
# OR win.bind(same thing above)
event
设置为None
以便当按钮尝试调用此 function 并且没有传递任何参数时,它不会向您抛出错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.