如何在 Python Qt 应用程序中使用 KDE Okular 的文档视图小部件?

How to use KDE Okular's document view widget in a Python Qt app?

我正在 Python (3.4) Linux 使用 Qt (4.8) 和 PyQt 编写桌面应用程序。

有没有办法 use/import Okular 的 pdf 查看功能作为一个小部件?如果是,如何?

pykde 可以提供所需的功能。不过,我还没有想出如何。


获取最新版本的pykde:

git clone git://anongit.kde.org/pykde4

文档:
https://techbase.kde.org/Development/Languages/Python
http://api.kde.org/pykde-4.3-api/install.html

构建它需要 PyQt4 和 CMAKE。一些 linux 发行版发布了 FindPyQt.py 的过时版本(导致 Python importerror : pyqtconfig 行的错误)。可以在这里找到一个实用的:
https://github.com/qgis/QGIS/blob/master/cmake/FindPyQt.py
将它放在 /usr/share/kde4/apps/cmake/modules/

要将 UI 文件编译成 Python 代码,请使用 pykdeuic4 而不是 pyuic4:

pykdeuic4 file.ui > file.py

这对我有用:

import sys
from PyKDE4.kdecore import ki18n, KAboutData, KCmdLineArgs
from PyKDE4.kdecore import KLibLoader as ll
from PyKDE4.kdeui import KApplication
import PyKDE4.kparts as kp


appName     = "KApplication"
catalog     = ""
programName = ki18n ("KApplication")
version     = "1.0"
description = ki18n ("KApplication")
license     = KAboutData.License_GPL
copyright   = ki18n ("(c) 2007 John Doe")
text        = ki18n ("none")
homePage    = "www.johndoe.com"
bugEmail    = "johndoe@nowhere.com "

aboutData   = KAboutData(
    appName, catalog, programName, version, description,
    license, copyright, text, homePage, bugEmail
)

KCmdLineArgs.init(sys.argv, aboutData)

app     = KApplication()
win     = kp.KParts.MainWindow()
okupart = ll.self().factory('okularpart').create()
win.setCentralWidget(okupart.widget())
win.show()

app.exec_()