【发布时间】:2017-06-09 01:56:57
【问题描述】:
我有自己的用 Qt 编写的 C++ 库项目(带有源代码),它使用 QTcpsocket、QUdpSocket、QSerialPort 信号和插槽。
我也想在 Python 中支持这个库。
最好的方法是什么?
- 用 Python 编写包装器,如果是的话,是否有障碍?
- 不知道 PyQt 是否只是为了这个目的?
- 或者您认为仅通过实现 C++ 库项目中使用的逻辑来重写 Python 中的 lib 是否更好。
因为这个库是 SDK 的一部分,所以同样适用于支持 .NET 的 QT dll,事实上,作为支持 Python 之后的第二步。
Qt 的示例 API。
quint16 SendCommandAsync(CmdBaseSpv1* pcommand,
ConnectionArg connectionArg,
emitLogOptions::emitLogOption logOption,
LogInfo &txLogInfo,
LogInfo &rxLogInfo);
我想从 Python 调用这个函数。
函数参数CmdBaseSpv1、ConnectionArg、emitLogOption、LogInfo都是Qt类。
其中一些参数使用QOBJECT 基类。
从函数名可以看出;它是一个异步函数调用。结果会发出一个信号,所以我也需要得到异步结果。
【问题讨论】:
-
API 是什么样的?您需要在用户代码中使用 Qt 类吗?如果是,您是否还可以使用字符串和列表等 Python 原生类?
-
@GeorgSchölly 如果你指的是 QT API,它在很大程度上依赖于 QT 类和类型,例如 QString、quint32 等。
-
你图书馆的 API 怎么样?您希望向 Python 公开的方法/类是什么样的?
-
我已经编辑了问题并给出了一个示例 API。
-
有点离题,但我会推荐 PySide 而不是 PyQt 来解决许可问题(PyQt 不超过 LGPL 版本)。
标签: python c++ qt pyqt wrapper