如何监听任何 Entry 更改事件?

How to listen to any Entry change events?

我正在编写一个小程序,每秒将来自 API 的值填充到 Entry 组件中。但我也需要用户能够随时自行更改任何值。 所以我现在拥有的是:

from tkinter import *

root = Tk()
sv = StringVar()

def callback():
    print(sv.get())
    return True

e = Entry(root, textvariable=sv, validate="key", validatecommand=callback)
e.grid()
e = Entry(root)
e.grid()
root.mainloop()

这样我就可以在他们按下某个键时激活我的回调函数。但是,当值被更改 Entry 组件的 API 自动收报机更改时,我也需要它发生。每当任何条目上的任何条目 text/value 发生更改时,我都需要调用我的函数。 我曾经在 Delphi 中编写代码,我们有一个用于编辑的 onChage 事件,但在 Python 中我有点迷路了。

您可以在 StringVar:

上使用 trace 方法
def trace_method(*args):
    #do your thing...

sv.trace("w",trace_method)

如果需要传递参数,可以使用lambda:

def trace_method(*args,parameter=None):
    if parameter:
        print (parameter)

sv.trace("w",lambda *args: trace_method(parameter="Something"))