我有一个Note Note程序,目前我可以在TextBox-1中键入一个关键字,然后按Enter键将我的笔记显示在TextBox-2中。
我能找到如何将Enter绑定到按钮的唯一方法是始终将其绑定到该按钮。或者我可以将Enter绑定到一个函数。只有当我当前在textBox-1中时,我宁愿将它绑定到按钮/功能。
我甚至不知道是否可能,因为我找不到任何类似于我需要的东西。
目前我的Enter键绑定如下:
root.bind('<Return>', kw_entry)
当我按Enter键时调用函数kw_entry。
def kw_entry(event=None):
e1Current = keywordEntry.get().lower()
if e1Current in notes: # e1Corrent is just the current text in TextBox-1
root.text.delete(1.0, END)
root.text.insert(tkinter.END, notes[e1Current])
root.text.see(tkinter.END)
else:
root.text.delete(1.0, END)
root.text.insert(tkinter.END, "Not a Keyword")
root.text.see(tkinter.END)
在大多数情况下,这个工作正常,但是我也想编辑正在显示的注释,问题是我在TextBox-2中无法按Enter键,因为Enter必须调用函数kw_entry。这是一个问题,因为它会重置TextBox-2中的所有内容。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
如果您只希望在焦点位于特定小部件时应用绑定,请将绑定放在该小部件上。
在以下示例中,如果在文本小部件中按return,则会在控制台上打印一条消息。如果您在条目小部件中,则不会发生这种情况。
import tkinter as tk
def foo(event):
print("you pressed return")
# the following prevents the enter key from inserting
# a newline. If you remove the line, the newline will
# be entered after this function runs
return "break"
root = tk.Tk()
entry = tk.Entry(root)
text = tk.Text(root)
entry.pack(side="top", fill="x")
text.pack(side="bottom", fill="both", expand=True)
text.bind("<Return>", foo)
root.mainloop()