Я настроил виджет Entry с помощью tkinter и использую StringVar для отслеживания любых изменений в нем.Однако, когда я пытаюсь использовать функцию обратного вызова, я обнаруживаю, что не могу передать ей ни одного аргумента.
Вот что я пробовал:
hpstring = StringVar()
hpstring.trace("w", hptrace)
hpstring.set("0")
hpbox = tk.Entry(frame, textvariable=hpstring)
hpbox.pack()
def hptrace(*args):
print(hpstring)
Это не удалось, потому что hpstringне определено.
hpstring = StringVar()
hpstring.trace("w", hptrace(hpstring))
hpstring.set("0")
hpbox = tk.Entry(frame, textvariable=hpstring)
hpbox.pack()
def hptrace(*args):
print(hpstring)
Это также как-то не получается.
hpstring = StringVar()
hpstring.trace("w", lambda hpstring: hptrace(hpstring))
hpstring.set("0")
hpbox = tk.Entry(frame, textvariable=hpstring)
hpbox.pack()
def hptrace(*args):
print(hpstring)
На этот раз это не удается, потому что "() принимает 1 позиционный аргумент, но 3 было дано".
Есть ли способ, чтобы моя функция обратного вызова (hptrace) принимала hpstring в качестве аргумента?