只有在文本框内,我如何才能将Enterkey <return>绑定到按钮?

时间:2017-03-27 15:20:16

标签: python tkinter textbox

我有一个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中的所有内容。

有人能指出我正确的方向吗?

1 个答案:

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