Seite 1 von 1

Kann Workaround zu bekanntem Tkinter Fehler nicht umsetzen

Verfasst: Sonntag 13. Mai 2007, 14:42
von Mr_Snede
Ich habe es mal nicht unter Tkinter gestellt, weil ich gerade nicht denke, dass es so spezifisch ist.
Wenn ich da falsch liege halt einfach verschieben.

Ich möchte gerne ein Tkinter Textfeld auf Änderungen im Text überprüfen. Ziel ist es den Knopf zum abspeichern farblich zu verändern.

Herausgefunden habe ich schon ,dass dazu

Code: Alles auswählen

mein_textwidget.edit_modified()
verwendet werden kann:
--> http://epydoc.sourceforge.net/stdlib/Tk ... t_modified

Jetzt bekomme ich aber eine Fehlermeldung (so wie viele andere vor mir auch ):

Code: Alles auswählen

Traceback (most recent call last):
  File "wombat_text_editor.py", line 37, in on_txt_changes
    if self.text.edit_modified():
  File "/usr/lib/python2.4/lib-tk/Tkinter.py", line 2861, in edit_modified
    return self.edit("modified", arg)
  File "/usr/lib/python2.4/lib-tk/Tkinter.py", line 2849, in edit
    return self._getints(
  File "/usr/lib/python2.4/lib-tk/Tkinter.py", line 975, in _getints
    return tuple(map(getint, self.tk.splitlist(string)))
TypeError: coercing to Unicode: need string or buffer, bool found
Dazu gibt es ein Workaround, das ich aber irgendwie nicht schaffe anzuwenden:
--> http://pybugs.efod.se/issue961805

Ich habe versucht dieses Workaround für mich an zu passen:

Code: Alles auswählen

34	            print self.tk.call('eval','%s edit modified'%self.text)
Das Problem ist: da kommt immer True bei raus :-(


Der Quelltext ist unter:
--> http://trac.webshox.org/browser/wombat/ ... _editor.py
einzusehen.

Hinweis:
Im Moment können nur *.txt Dateien aus dem gleichen Ordner geöffnet werden.

Cu Sebastian

Verfasst: Dienstag 22. Mai 2007, 09:54
von Mr_Snede
Habe es im Moment so gelöst, dass ich einfach in regelmäßigen Abständen hashes des Textes vergleiche. Nicht wirklich performant aber funzt eben.

Sonst habe ich noch bei activestate das hier gefunden:
http://aspn.activestate.com/ASPN/Cookbo ... ipe/464635

Naja, wenn ich mal ne ruhige Stunde habe, werde ich mal versuchen das Problem wie im obigen Post beschrieben zu lösen.