Tkinter <<Modified>> and bindtags ordering

bytecolor bytecolor at yahoo.com
Tue Apr 3 00:00:41 EDT 2007


I'm trying to extract the text of the current line on the <<Modified>>
event.
It doesnt work if I delete a character. If I type 'abc' I get 'abc' in
text_changed().
If I hit backspace I still get 'abc'. Backspace once more, I get 'ab'.
So the
callback is called before the text is changed. But only on a delete.
Someone told me it has to do with bindtags ordering. I've read what
docs I can
find on the subject, but I cant figure out why it's not working. Maybe
I should
learn a bit of Tcl, eh?

import Tkinter as tk

def text_changed(evt):
    global changing
    if changing: return
    changing = True
    line, col = t.index('insert').split('.')
    txt = t.get('%s.0' % line, '%s.end' % line)
    print '|%s|' % txt
    t.tk.call(t._w, 'edit', 'modified', 0)
    changing = False

changing = False
root = tk.Tk()
t = tk.Text(master=root)
t.pack()
t.focus_set()
t.tk.call(t._w, 'edit', 'modified', 0)
t.bind('<<Modified>>', text_changed)
root.mainloop()

--
bytecolor




More information about the Python-list mailing list