<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//DE"><HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><TITLE></TITLE></HEAD><BODY><div style="font-family:arial,helvetica,sans-serif;font-size:10pt;"><p style="margin:0px;padding:0px;"><br /><br /><br />I want to get the cursor position (line and column) of the insertion point of a Tkinter.Text, but you may assume the answer is easy until you run this simple test run.  Acutally I hope someone finds it easy.<br /><br />PROBLEM: My text editor project requires a custom undo/redo for Tkinter.Text. I put in the same string for both Test One and Test Two below, but undo does not act consistently due to a inconsistent column variable in KeyRelease event handler given by Tkinter. The problem seems to be that I type too fast for second test which produces a bad column value. Can you help me find the problem?<br /><br />TWO TEST PROCESS TO REPRODUCE THE ERROR:<br /><br />TEST ONE<br /><br />        Type this string slowly: 'one two three'<br />        Press F1 to see each word undo.<br /><br />    Result: Works fine. (For me atleast. Ephasis: type slowly.)<br /><br />TEST TWO<br /><br />        Type the same string as fast as you can: 'one two three'<br />        Press F1 to see each word undo.<br /><br />    Result: Gets the wrong column and does not undo properly. (Restart script and repeat this step if you don't see the error at first, it sometimes works fine with fast typing. I usually get it with 3 to 4 tries at the most.)<br /><br />QUESTION: Is this a bug in Tkinter, or am I not understanding something specific within Tkinter that would produce consistent columns for my undo/redo records?<br /><br /><br /><br />from Tkinter import *<br /><br />class TextView(Text):<br /><br />    def __init__(self, root):<br />        Text.__init__(self, root)<br /><br />        self.history = History(self)<br />        self.bind("<KeyRelease>", self.keyRelease)<br /><br />        # used to capture a char at a time in keyRelease.  If space char is pressed it , self.word)<br /><br />if __name__ == "__main__":<br />    root = Tk()<br />    root.geometry("400x200+0+0")<br /><br />    textView = TextView(root)<br />    textView.pack()<br />    root.bind("<F1>", textView.undo)<br />    root.bind("<F2>", textView.redo)<br /><br />    root.mainloop()</p></div><br><br>---<br><div style="font-family:arial;font-size:10pt;">Alle Postfächer an einem Ort. Jetzt wechseln und E-Mail-Adresse mitnehmen! <a style="font-family:arial;font-size:10pt;" href="http://email.freenet.de/basic/Informationen" target="_blank">Rundum glücklich mit freenetMail</a></div>
</BODY></HTML>