2016-04-18 1 views
0

Я ищу, чтобы отобразить .pdf-файл в wxPython, точно так же, как он появится, если вы откроете указанный .pdf-файл с помощью Windows Notepad. Все в моей программе работает, за исключением случаев, когда мои данные отправляются в txtctrl. Соответствующая часть моего кода:Unicode и wxPython TextCtrl

def DoOpen(self): 
    """Show file open dialog and open file""" 
    wildcard = "pdf Files (*.pdf)|*.pdf" 
    dlg = wx.FileDialog(self,message="Open a File",wildcard=wildcard,style=wx.FD_OPEN) 
    if dlg.ShowModal() == wx.ID_OK: 
     path = dlg.GetPath() 
     with codecs.open(path, 'rb','utf8','ignore') as handle: 
      text = handle.read() 
      print (text) 
      self.txtctrl.SetValue(text) 
      self.file = path 
    dlg.Destroy() 

Печатающего оператор печатает мой переводчик, как это должно появиться в моей программе. Но после того, как данные передаются через метод SetValue, текст, выводимый на wxPython, заканчивается, как только он попадает в мой первый поток объектов, точно так же, как он появляется, если я пропущу «игнорировать» при открытии файла для чтения.

Я прочитал http://wiki.wxpython.org/UnicodeBuild и стал еще более запутанным в процессе. Мысли?

+0

Используете ли вы последнюю версию wxPython? Кажется, что все сборки в настоящее время являются сборками Unicode. Однако на странице загрузки упоминаются *, хотя строковые объекты, переданные в API wx, по-прежнему будут автоматически преобразованы *, что оставляет мне интересно. –

+0

Wx версия 3.0.1.1 msw (классический) – user139553

ответ

0

Я предполагаю, что wx.TextCtrl поддерживает только действует Вход UTF-8. Поскольку «символы» в потоке объектов PDF не являются UTF-8, вы можете преобразовать его, прежде чем передавать его в wx.TextCtrl. Например, вы можете попробовать декодировать, используя raw_unicode_escape кодек вместо utf-8.