如何收听任何Entry变化事件?

时间:2019-07-04 02:18:41

标签: python python-3.x tkinter tkinter-entry

我正在编写一个小程序,它每秒将来自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()

这样,只要他们按下一个键,我就可以激活我的回调功能。但是,当通过更改条目组件的API代码更改值时,我也需要发生这种情况。每当在任何Entry上更改任何Entry文本/值时,都需要调用我的函数。 我曾经用Delphi编写代码,那里有一个onChage事件来进行编辑,但是在Python中我有点迷失了。

1 个答案:

答案 0 :(得分:2)

您可以在trace上使用StringVar方法:

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"))