Seite 1 von 1
umlaute speichern
Verfasst: Samstag 7. Februar 2004, 11:29
von rogen
ich habe ein kleines script:
Code: Alles auswählen
from Tkinter import *
import tkFileDialog
class Editor:
def __init__ (self):
fenster = Tk()
self.text = Text(fenster)
self.text.pack()
dateim = Menu(fenster)
dateim.add_command(label="speicher", command = self.speicher)
fenster.config(menu=dateim)
mainloop()
def speicher(self):
self.datei = tkFileDialog.asksaveasfile()
if self.datei:
self.datei.write(self.text.get(1.0,END))
editor = Editor()
leider kann ich keine umlaute speichern
Verfasst: Samstag 7. Februar 2004, 12:09
von Milan
Das muss ein Fehler in Tcl/TK sein, Python hat damit nix zu tun. Scheinbar kann kein UNicode zurückgesendet werden (bei get), denn wenn ich von Python aus Umlaute einfüge, kann ich die auch speichern (
self.text.insert(END,"\xdc")). Es empfiehlt sich also, mal eine aktuellere version zu installieren (von Tcl/TK). Aber du hast noch einen anderen Fehler in deinem Programm:
ich habe erst einmal gerätselt, warum bei mir gar nichts gespeichert wurde, aber eine Datei da war. Als ich dein Script dann zu gemacht habe, hat er gespeichert --> du vergisst die Datei wieder zu schließen. Alternativ kannst du das ja auch wirklich weglassen, darfst aber nicht das file-Obj speichern, es wird eh beim nächsten speichern-Dialog überschrieben.
Code: Alles auswählen
def speicher(self):
datei = tkFileDialog.asksaveasfile()
if datei:
datei.write(self.text.get(1.0,END))
Verfasst: Samstag 7. Februar 2004, 13:41
von hans
Milan hat geschrieben:Scheinbar kann kein UNicode zurückgesendet werden (bei get), denn wenn ich von Python aus Umlaute einfüge, kann ich die auch speichern
Kann es sein dass Python mit UTF8 arbeitet während das Betriebssystem standardmäßig ISO 8859-15 verwendet?
Ich hatte ähnliche Probleme bei Verwendung von QT. Vor Verwendung des Strings muss ich diesen konvertieren, dann geht's.
Hans
Verfasst: Samstag 7. Februar 2004, 22:28
von DER Olf
konvertieren??
ich hatte mal ein ähnliches problem (und habs immer noch):
ich kann keine umlaute suchen.
keine schöne lösung
Verfasst: Sonntag 8. Februar 2004, 09:55
von rogen
das löst zwar das problem, ist aber nicht schön
Code: Alles auswählen
from Tkinter import *
import tkFileDialog
def sonderzeichen(eing):
a = repr(eing)
a = a.replace("\\xe4","ä")
a = a.replace("\\xfc","ü")
a = a.replace("\\xf6","ö")
a = a.replace("\\xd6","Ö")
a = a.replace("\\xc4","Ä")
a = a.replace("\\xdc","Ü")
a = a[1:]
a = a.replace("\'","")
a = str(a)
return a
class Editor:
def __init__ (self):
fenster = Tk()
self.text = Text(fenster)
self.text.pack()
dateim = Menu(fenster)
dateim.add_command(label="speicher", command = self.speicher)
dateim.add_command(label="offnen", command = self.laden)
fenster.config(menu=dateim)
mainloop()
def speicher(self):
self.datei = tkFileDialog.asksaveasfile()
if self.datei:
print sonderzeichen(self.text.get(1.0,END))
print "---------------"
print (self.text.get(1.0,END))
self.datei.write(sonderzeichen(self.text.get(1.0,END)))
def laden(self):
self.datei = tkFileDialog.askopenfile()
self.text.delete(1.0, END)
if self.datei:
zeilen = self.datei.read().split("\\n")
print zeilen
print len(zeilen)
for a in zeilen:
self.text.insert(END,a + "\n")
editor = Editor()[quote]
[/quote]
Verfasst: Sonntag 8. Februar 2004, 09:55
von rogen
aber zum suchen würde das helfen.
Verfasst: Sonntag 8. Februar 2004, 10:33
von DER Olf
würde denn nicht auch:
Code: Alles auswählen
import sys
sys.getdefaultcoding(Unicode) #ja...welches encodin nun???? :?
reichen?
aber welches encoding müsste man setzen? geht auch ASCII? (kenn ich besser aus delphi)
Verfasst: Sonntag 8. Februar 2004, 11:36
von hans
Hi rogen, hab mir mal einen alten Thread rausgesucht.
http://python.sandtner.net/viewtopic.ph ... ight=88591 man achte am Ende auf die QT Lösung QString.local8bit !
Vielleicht gibt es soetwas ja auch in TKInter
Hans