【问题标题】:Creating a C++ Qt Gui for a Python logic为 Python 逻辑创建 C++ Qt Gui
【发布时间】:2019-06-20 13:45:02
【问题描述】:

我看到了一个 Python 逻辑,我需要为其创建一个 GUI。我想为此目的使用 Qt,理想情况下我想用 C++ 对其进行编程,而不使用 Qt Creator。

将 C++ Qt GUI 和 Python 逻辑结合起来的推荐方法是什么,也许还有一个控制层(使用 Python 或 C++)?

由于之前的研究,我知道某些工具,如 PySide、PythonQt、SWIG、Shiboken 和其他工具(虽然到目前为止我还没有使用过),并且将 *.ui 文件导入 Python 非常简单,但是可能的方法数量有点压倒性,到目前为止我还没有想出一个“好的解决方案”。

理想情况下,我使用 Qt Designer,而是手动创建 GUI(窗口、自定义小部件、帮助类等),将它们组合成一个或几个我公开给 Python/ 的类管理 GUI 和逻辑之间的通信的 C++ 控制层(通过包装器?DLL?)。

我怎样才能做到这一点?

这个问题的简短版本可能只是:如何将 Qt C++ GUI 与 Python 逻辑一起使用?

【问题讨论】:

  • 为什么不使用native python GUI framework 而不是Qt?
  • 坦率地说,因为我知道 Qt...
  • 坦率地说,知道一个工具并不能使它成为解决给定问题的最佳解决方案(例如 金锤银弹 反模式)。
  • 如果你决定坚持使用 python 并且仍然想使用 Qt,我会推荐 PySide2,它现在正式成为 Qt 的一部分
  • @LCsa 如果您了解 Qt 并假设您已经编写了应用程序的逻辑部分,那么最好使用一些 Qt 绑定,例如 PyQt5 或 PySide2,因为您已经知道 python 语法和 Qt 方法.

标签: python c++ qt user-interface


【解决方案1】:

您可以使用 qt c++ 创建您的 GUI 应用程序,并包装使用嵌入 python api 的 python api 编写的控制器逻辑。 https://docs.python.org/2/extending/embedding.html 但是如果你有很多方法会很无聊,而且如果在 c++ 端写得不好,你可能会出现一些内存泄漏。

另一种解决方案可能是使用网络服务(rest api/json rpc ....Etc...)对 python api 进行 rpc 调用。 Qt 应用程序是 python rest api 的客户端。 像这样,您将 c 代码与 python 代码分开。您可以使用 json rpc 调用或其他 api,如 jcon (https://github.com/joncol/jcon-cpp) 来做到这一点。 您也将能够找到能够一起交谈的 python 和 QT xml rpc api。

swig (http://swig.org) 可能有一些能力,但它更好地用于其他方式:从 python 调用 c func

【讨论】:

  • Swig 是下一个银弹,所以呢?
  • 谢谢,已经看到可以创建界面了,但是会很麻烦……
猜你喜欢
  • 2016-06-23
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多