ich habe ein echtes Problem mit den Umlauten (genauer wahrscheinlich allen nicht Ascii-Zeichen). Damit ich Umlaute aus einem Entry-Widget einlesen und verarbeiten kann benutze ich die Methode
Code: Alles auswählen
feld.encode("cp1252")
Das funktioniert auch soweit. Das Problem fängt an, wenn ich solch einen Umlaut von der Datei in meine Oberfläche einlese und jetzt noch einmal das Feld verarbeiten möchte. Jetzt stört genau diese encode-Anweisung.
Hier kommt mein abgespeckter Code mit dem man sich dieses Problem anzeigen lassen kann.
Code: Alles auswählen
# -*- coding: cp1252 -*-
""" falls es Probleme mit den Umlauten gibt, versuche folgendes:
.encode("cp1252"))
"""
from Tkinter import *
from tkMessageBox import showinfo, showerror
DATEI = "D:\\Install\\Python24\\Projekte\\Adressbuch\\Test2.txt"
def dataRead():
f = open(DATEI)
return f.readline()
f.close()
def dataWrite(f_out, line):
fd_out = file(f_out, "w")
fd_out.write("%s\n" % (line))
fd_out.close()
class MyApp:
def __init__(self, parent):
self.myParent = parent
self.frame1 = Frame(self.myParent,relief=SUNKEN,bd=1)
self.frame1.pack(expand=YES,fill=BOTH,padx=8,pady=6)
fieldLabel = Label(self.frame1,text="Feld:",anchor=W,width=10)
self.fieldVar = StringVar()
self.fieldEntry = Entry(self.frame1,textvariable=self.fieldVar,
width=20)
fieldLabel.pack(side=LEFT)
self.fieldEntry.pack(side=LEFT)
self.fieldEntry.focus_force()
# Button-Frame
self.frame6 = Frame(self.myParent)
self.frame6.pack(anchor=CENTER,pady=10)
self.buttonUpd = Button(self.frame6,text='Ändern',
underline=0,
command=self.updateInfo,
width=10)
self.buttonUpd.pack(side=LEFT,expand=NO,padx=6)
self.fieldVar.set(dataRead())
def updateInfo(self):
dataWrite(DATEI,self.fieldVar.get().encode("cp1252"))
showinfo(" Info","der Satz wurde geändert")
# ----------------------------------------------------------------------------
# zum testen
if __name__ == "__main__":
root=Tk()
MyApp(root)
#root.mainloop()
So ich hoffe ich habe mich klar genug ausgedrückt.
PS: Vielleicht könnt ihr mir auch noch sagen, ob meine Coding-Anweisung in der ersten Zeile sinnvoll ist.
Vielen Dank schon einmal im voraus
Gruß Hartmut