Как прослушать какие-либо события Entry change? - PullRequest
0 голосов
/ 04 июля 2019

Я пишу небольшую программу, которая заполняет значения, которые приходят из 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. Мне нужно, чтобы моя функция вызывалась всякий раз, когда какой-либо текст / значение записи изменяется в любой записи. Я имел обыкновение кодировать в Delphi, и там у нас было событие onChage для правок, но в Python я немного растерялся.

1 Ответ

2 голосов
/ 04 июля 2019

Вы можете использовать метод 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"))
...