i have a problem with wxpython and his rich text control, when I try to insert unicode characters… \xb2 prints an apex ‘2’, ‘\u2074’ should print an apex ‘4’…
edit: I use windows vista… and I tried ‘coding cp1252 ‘ and ‘utf-8’ but with the same result…
2edit:
on vista it crashs, on xp it shows a strange square (i guess it’s when the pc doesn’t recognize the character…)
here is the source code:
from __future__ import unicode_literals
import wx
import wx.richtext as rt
class Trial(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'Prova',
size=(400, 400))
self.rtc = rt.RichTextCtrl(self, style=wx.VSCROLL|wx.HSCROLL|wx.NO_BORDER)
wx.CallAfter(self.rtc.SetFocus)
#self.rtc.Freeze()
self.rtc.BeginFontSize(14)
self.rtc.WriteText('hei!\xb2') #alright
self.rtc.WriteText('hi\u2074!')#crash
self.rtc.EndFontSize()
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = Trial()
frame.Show()
app.MainLoop()
but when I try to run it, it crashs…
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
frame = display.Trial()
File "C:\Users\expert\Desktop\display.py", line 15, in __init__
self.rtc.WriteText('hi\u2074!')
File "C:\Python26\lib\site-packages\wx-2.8-msw-ansi\wx\richtext.py", line 2507, in WriteText
return _richtext.RichTextCtrl_WriteText(*args, **kwargs)
File "C:\Python26\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2074' in position 4: character maps to <undefined>
so…what should I do? I really need to show it…
thanks everybody!!
If you want Unicode support then you should be using the unicode version of wxpython.
Most other platforms also have two versions.
It works fine if you pass the actual symbols e.g