Hallo!
Bugfix hat geschrieben:Gehört vielleicht auch nach Gui Entwicklung
Denke ich auch, da das Problem nur mit den Möglichkeiten der jeweiligen GUI-Lib lösbar sein dürfte.
Um Tkinter geht's, nehme ich an. Im Prinzip ganz einfach: Das Event <KeyRelease> abfangen, den String aus dem Entry holen, ggf. den Umlaut ersetzen, den String wieder ins Entry zurückschreiben und schließlich die Textcursorposition ggf. anpassen. Im Detail ist das so ein Sache mit den Umlauten. Kleiner Hack (läuft unter W2K und Linux):
Code: Alles auswählen
from Tkinter import *
root=Tk()
tvar = StringVar()
b1 = Entry(root,textvariable=tvar)
b1.pack()
def onKeyRelease(e):
s = tvar.get()
#print "%x%x" % (ord(s[-2]),ord(s[-1]))
sAlt = s
s = s.replace("\xc3\xa4","ae")
s = s.replace("\xc3\xb6","oe")
s = s.replace("\xc3\xbc","ue")
if sAlt != s:
tvar.set(s)
curPos = b1.index(INSERT)
b1.icursor(curPos+1)
b1.bind('<KeyRelease>',onKeyRelease)
root.mainloop()
Dieses "\xc3\xa4" ist die Unicode-Darstellung des 'ä'. Das geht nur so, da StringVar.get() eben einen Unicode-String zurückliefert.
Muss nicht die einzige Möglichkeit sein. Ich könnte mir vorstellen, dass es deutlich eleganter geht.
hth
Jan