Seite 1 von 1

Coding+wx.TheClipboard

Verfasst: Mittwoch 14. November 2007, 20:52
von Tompee
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

Re: Coding+wx.TheClipboard

Verfasst: Mittwoch 14. November 2007, 21:23
von gerold
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
:-)

Verfasst: Mittwoch 14. November 2007, 21:31
von Tompee
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

Re: Coding+wx.TheClipboard

Verfasst: Donnerstag 15. November 2007, 08:01
von HWK
gerold hat geschrieben:

Code: Alles auswählen

text = text.encode("iso-8859-1")

Verfasst: Donnerstag 15. November 2007, 14:54
von Tompee
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.

Verfasst: Donnerstag 15. November 2007, 14:57
von gerold
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
:-)

Verfasst: Donnerstag 15. November 2007, 15:02
von Tompee
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

Verfasst: Donnerstag 15. November 2007, 15:27
von gerold
Hallo Tompee!

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

mfg
Gerold
:-)