如何克服这个pdfviewer "No module named viewer" wxpython中的错误?



我正在尝试创建一个具有显示pdf文件功能的应用程序,并且由于pdfviewer类,我决定使用wxpython来执行此操作。

确保我有pyPDF2和pyPdf。(可以使用其中之一,但同时安装两者以查看这是否是问题所在。

但是,当我在底部运行代码时。(摘自此处)(删除了第 31 行和第 17 行的"。在 之前添加了 wx。VSCROLL 和 .SUNKEN_BORDER在第 16 行)我收到消息:

Traceback (most recent call last):
  File "E:Testpdf.py", line 4, in <module>
    from wx.lib.pdfviewer import pdfViewer, pdfButtonPanel
  File "C:Python34libsite-packageswxlibpdfviewer__init__.py", line 124, in <module>
    from viewer import pdfViewer
ImportError: No module named 'viewer'

然后,当我转到该包文件以确认模块查看器在那里时,我运行了它并且第 124 行正常工作。它只是在运行此示例文件时不起作用,我认为它与在我的应用程序中时相同。

有谁知道我需要做什么来解决这个问题。这个模块看起来非常适合我计划做的事情。

谢谢

import wx
import wx.lib.sized_controls as sc
from wx.lib.pdfviewer import pdfViewer, pdfButtonPanel
class PDFViewer(sc.SizedFrame):
    def __init__(self, parent, **kwds):
        super(PDFViewer, self).__init__(parent, **kwds)
        paneCont = self.GetContentsPane()
        self.buttonpanel = pdfButtonPanel(paneCont, wx.NewId(),
                                wx.DefaultPosition, wx.DefaultSize, 0)
        self.buttonpanel.SetSizerProps(expand=True)
        self.viewer = pdfViewer(paneCont, wx.NewId(), wx.DefaultPosition,
                                wx.DefaultSize,
                                wx.HSCROLL|wx.VSCROLL|wx.SUNKEN_BORDER)
        self.viewer.UsePrintDirect = False
        self.viewer.SetSizerProps(expand=True, proportion=1)
        # introduce buttonpanel and viewer to each other
        self.buttonpanel.viewer = self.viewer
        self.viewer.buttonpanel = self.buttonpanel

if __name__ == '__main__':
    import wx.lib.mixins.inspection as WIT
    app = WIT.InspectableApp(redirect=False)

    pdfV = PDFViewer(None, size=(800, 600))
    pdfV.viewer.UsePrintDirect = False
    pdfV.viewer.LoadFile(r'a path to a .pdf file')
    pdfV.Show()
    app.MainLoop()

这需要一些工作才能让pdfviewer在Py3上工作,我为它做了一个PR。 不是 PR 从 pyPDF 切换到 PyPDF2,因为前者不支持 Py3,它还取决于有人所做的 PR 172 让 PyPDF2 在 Py3 上正常工作。

最新更新