Unicode和wxPython TextCtrl

时间:2016-04-18 03:05:10

标签: python pdf unicode encoding wxpython

我希望在wxPython中显示一个.pdf文件,就像用Windows Notepad打开所述.pdf文件一样。我的程序中的所有内容都可以工作,除非我的数据发送到txtctrl。我的代码的相关部分是:

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()

print语句打印到我的解释器,因为它应该出现在我的程序中。但是在数据通过SetValue方法传递之后,输出到wxPython的文本会在它到达我的第一个对象流时立即终止,就像我省略的那样,忽略'忽略'打开文件阅读时。

我已阅读http://wiki.wxpython.org/UnicodeBuild并且在此过程中变得更加困惑。想法?

1 个答案:

答案 0 :(得分:0)

我的猜测是wx.TextCtrl仅支持有效的 UTF-8输入。由于"字符"在PDF对象流中不是UTF-8,您可以在将其传递给wx.TextCtrl之前对其进行转换。例如,您可以尝试使用raw_unicode_escape编解码器而不是utf-8进行解码。