【问题标题】:How to implement Qt4 widgets written in C++ into some Python code?如何将用 C++ 编写的 Qt4 小部件实现到一些 Python 代码中?
【发布时间】:2012-05-24 05:27:22
【问题描述】:

在我尝试使用 PyQt4 创建 GUI(文档查看器)时,未能重现现有程序的质量,有人建议我应该使用那些现有程序的 Qt4 小部件(准确地说是 Okular),而不是重新发明轮子。

很公平,但是那些 Qt4 小部件是用 C++ 编写的:我应该如何从 Python 端调用它们?它是否需要我学习 C(在这种情况下,我宁愿花更多时间来找出完全 Pythonic 的解决方案)?

【问题讨论】:

  • 更正了 Mata 指出的问题,Qt 是用 C++ 编写的,而不是我最初假设的 C。

标签: c++ python qt4 pyqt4


【解决方案1】:

Qt 不是用 C 编写的,它是用 C++ 编写的,Okular 也是如此。

不幸的是,让 C++ 库与 python 一起工作并不像通过 ctypes 使用 C 库那么容易。为此,您需要围绕 C++ API 编写一些包装代码以使其正常工作。
一些方法:

  • sip - PyQt 使用
  • shiboken - PySide 使用
  • cython也可以用来封装C++,不知道能不能和Qt一起玩

【讨论】:

  • 好的。所以假设我需要一个来自 Okular 的模块,比如 PDFViewer 小部件,我可以简单地关注the C++ example on the SIP documentation。然后在创建这些脚本之后,我可以简单地导入模块及其类,就好像它们是用 Python 编写的一样?听起来好得令人难以置信。
  • 是的,但是您仍然需要编写所有 sip 定义代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多