from Tkinter import *

app = Tk()
text_field = Entry(app)
text_field.pack()
app.mainloop()

我想如果text_field当前选定或者集中到能够检查,这样我才知道是否要做点什么的内容,当用户按下回车。

有帮助吗?

解决方案

如果你想在用户按下输入只有在重点是在进入小部件做一些事情,只需添加一个绑定到录入组件。如果该控件具有焦点它只会火。例如:

import tkinter as tk

root = tk.Tk()
e1 = tk.Entry(root)
e2 = tk.Entry(root)
e1.pack()
e2.pack()

def handleReturn(event):
    print("return: event.widget is",event.widget)
    print("focus is:", root.focus_get())

e1.bind("<Return>", handleReturn)

请注意,如果当你按返回的第一项具有焦点的处理程序只调用。

如果你真的想根对象在全球约束力,需要知道哪些部件有重点,使用focus_get()方法。在下面的例子放在绑定“” (主顶层),使得它触发无论什么具有焦点:

import tkinter as tk

root = tk.Tk()
e1 = tk.Entry(root)
e2 = tk.Entry(root)
e1.pack()
e2.pack()

def handleReturn(event):
    print("return: event.widget is",event.widget)
    print("focus is:",root.focus_get())

root.bind("<Return>", handleReturn)

注意两者的区别是:在第一个例子中,处理器将只当你按下的第一项控件返回调用。有没有需要检查哪些部件拥有焦点。在第二个例子中,处理程序将被称为无论哪个插件具有焦点。

这两个解决方案取决于你真正需要发生都不错。如果你的主要目标是只有做一些事情,当用户按下特定的控件返回,使用前者。如果你想有一个全球性的结合,但在基于什么有或没有焦点的结合做不同的事情,做后者的例子。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top