我正在尝试创建一个具有显示 pdf 文件功能的应用程序,并由于 pdfviewer 类而决定使用 wxpython 来执行此操作。
我确定我有 pyPDF2 和 pyPdf。(可以使用其中之一,但同时安装两者,看看是否是问题所在。)
但是,当我在底部运行代码时。(取自这里)(去掉了第 31 和 17 行的 ```。在第 16 行的 .VSCROLL 和 .SUNKEN_BORDER 之前添加了 wx)我收到了以下信息:
Traceback (most recent call last):
File "E:\Test\pdf.py", line 4, in <module>
from wx.lib.pdfviewer import pdfViewer, pdfButtonPanel
File "C:\Python34\lib\site-packages\wx\lib\pdfviewer\__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()