[英]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.