C Martin wrote: > What am I doing wrong in this code? The callback doesn't work from the Entry > widget. > > ##start code > import Tkinter > > tk = Tkinter.Tk() > var = Tkinter.StringVar() > print var._name > > def cb(name, index, mode): > print "callback called with name=%r, index=%r, mode=%r" % (name, index, > mode) > varValue = tk.getvar(name) > print " and variable value = %r" % varValue
iirc, getvar only looks at local Tcl variables when used inside a callback. variables created with StringVar are global Tcl variables. but instead of monkeying around at the Tcl level, why not just solve this on the Python level instead? def cb(variable, name, index, mode): ... var.trace('w', lambda *args: cb(var, *args)) # or some variation thereof (and for this specific case, Entry content tracking, binding to KeyRelease and possibly also ButtonRelease is usually good enough). </F> -- http://mail.python.org/mailman/listinfo/python-list