Coding+wx.TheClipboard

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Tompee
User
Beiträge: 18
Registriert: Sonntag 7. Oktober 2007, 17:13

Hi,

habe gerade angefangen mit wx-Python zu arbeiten und habe folgendes Problem.
Ich lade mit wx.TheClipboard einen String aus einem wx.TextCtrl in die Zwischenablage. Wenn ich diesen String unter Windows Vista in ein Textdokument einfüge, erhalte ich lauter chinesische Zeichen. :?
Unter Ubuntu auf meinem Laptop funktioniert das aber wunderbar.

Habe es auch schon mit

Code: Alles auswählen

wx.SetDefaultPyEncoding("iso-8859-1")
versucht, aber das klappt auch nicht.


Zusätzlich ist mir aufgefallen, das die Frame-Styles unter Vista nicht funktionieren. Also z.B.

Code: Alles auswählen

style = wx.CLOSE_BOX | wx.CAPTION | wx.MINIMIZE_BOX
Unter Ubuntu wunderbar, bei Vista zeigt er mir nur einen leeren Rahmen an.

Könnt ihr mir einen Tip geben?


Gruss Tompee
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Tompee!
Tompee hat geschrieben:Ich lade mit wx.TheClipboard einen String aus einem wx.TextCtrl in die Zwischenablage. Wenn ich diesen String unter Windows Vista in ein Textdokument einfüge, erhalte ich lauter chinesische Zeichen.
Keine Ahnung -- habe kein Vista.

Vielleicht hilft es, wenn du vorher den Unicode-String nach iso-8859-1 umzuwandelst. (Du verwendest ja die Unicode-Version von wxPython, oder?)

Code: Alles auswählen

text = myTextCtrl.GetValue()
text = text.encode("iso-8859-1")
Du kannst es auch noch mit anderen Encodings probieren. Z.B. mit "utf-8".
Tompee hat geschrieben:

Code: Alles auswählen

style = wx.CLOSE_BOX | wx.CAPTION | wx.MINIMIZE_BOX
Vielleicht solltest du es mal andersrum probieren. Ziehe nur die Flags von wx.DEFAULT_FRAME_STYLE ab, die du nicht haben willst.

Code: Alles auswählen

style = wx.DEFAULT_FRAME_STYLE ^ (wx.RESIZE_BOX | wx.RESIZE_BORDER)
Keine Ahnung ob das was hilft.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Tompee
User
Beiträge: 18
Registriert: Sonntag 7. Oktober 2007, 17:13

Hi Gerold,

danke dir, das mit den Frame-Styles funktioniert jetzt.

Mit dem encoding in der Zwischenablage noch nicht.

Code: Alles auswählen

data = self.text_log.GetValue()
data = data.encoding('iso-8859-1')
clipboard = wx.TextDataObject()
clipboard.SetData(str(data))
wx.TheClipboard.Open()
wx.TheClipboard.SetData(clipboard)
wx.TheClipboard.Close()
Dann fommt folgende Fehlermeldung:

'unicode' object has no attribute 'encoding'


Gruss Tompee
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

gerold hat geschrieben:

Code: Alles auswählen

text = text.encode("iso-8859-1")
Tompee
User
Beiträge: 18
Registriert: Sonntag 7. Oktober 2007, 17:13

Oh sorry, da hatte ich nicht richtig hingeschaut.

Nun, der Fehler ist aber immer noch vorhanden. Lauter chinesische Zeichen.
In einer anderen Funktion, speichere ich den Inhalt aus dem gleichen TextCtrl in eine Datei. Da ist aber alles ok.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Tompee hat geschrieben:Nun, der Fehler ist aber immer noch vorhanden. Lauter chinesische Zeichen.
Hallo Tompee!

Ich glaube, in diesem Fall musst du dich an die "wxPython-users"-Mainlinglist wenden. http://wxpython.org/maillist.php

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Tompee
User
Beiträge: 18
Registriert: Sonntag 7. Oktober 2007, 17:13

Ok, danke nochmals, ein Fehler wurde ja wenigstens behoben :lol:


Ich glaube hier besteht das gleiche Problem:

http://aspn.activestate.com/ASPN/Mail/M ... rs/2011302
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Tompee!

Das ist schon drei Jahre her. Ich würde einfach noch einmal nachfragen. ;-)

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten