我正在编写一个小程序,它每秒将来自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中我有点迷失了。
答案 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"))