如何通过 Python C api 在 QT 和 Python 之间进行接口
Posted
技术标签:
【中文标题】如何通过 Python C api 在 QT 和 Python 之间进行接口【英文标题】:How to interface between QT with Python by Python C api 【发布时间】:2014-09-17 23:00:10 【问题描述】:我正在编写一个与 python 交互的 Qt 程序。我必须将 Circle 类的 C++ 对象直接发送到 Python
1) Need to create a Python Module ( let say Shape )
2) Need to add a Python Class PCircle in Shape module which is equivalent to C++
Circle class.
3) Do the calculation on Python Environment ( Python 3.4)
4) Populate the data into PCircle Object in Python
5) Send it back to Qt Environment by storing the PCircle values to C++ Circle Object
and show the changes in real time in display
这就是我如何描述我的问题和我的目标,如果有不清楚的地方请评论。
谢谢
【问题讨论】:
已经有pyqt ... 你能举个例子吗? 如果我想从命令行访问那些 Python 对象?我们该怎么做?python -c "from PyQt4 import QtGui;a=QtGui.QApplication();w= QtGui.QWidget();w.setWindowTitle("TEST");w.show();app.exec_();"
虽然我不确定你的意思是什么
您将需要使用诸如SIP 或Cython 之类的工具为您的C++ 类创建python 绑定(或查看here 以了解许多其他可能性)。如果这太麻烦了,您可以随时使用json 之类的东西序列化您的PCircle
类,然后通过套接字或其他东西将其发送到您的C++ 程序。
【参考方案1】:
-
模块只是一个 python 文件...所以只需创建一个名为 Shape.py 的文件
打开Shape.py并添加
代码
from PyQt4 import QWidget
class PCircle(QWidget):
#implement methods here that are available to the QTCircleWidget
-
在 python 领域做一些计算
代码
def calculation(something):
return somthing**2
-
只需添加代码
my_circle = PCircle(x,y,radius)
打印出您想要返回给调用程序的任何数据。调用程序将需要解析该数据并对其进行处理....
【讨论】:
假设我们有 Qt 程序并且其中嵌入了一个 Python 控制台。我们想从嵌入在底部的 Python 控制台控制顶部的 Qt 小部件。下面的操作我们需要做什么? 1)如何从python控制台计算Qt Widgets组框中的小部件(复选框)的数量,它们的名称和复选框的状态? 2) 如何从 python 控制台更改每个复选框的状态? 3) 如何从控制台添加或删除复选框?请看一下[链接]drive.google.com/file/d/0B0TTBJJE6aEbT3NIRzAyVG4xYzg/…以上是关于如何通过 Python C api 在 QT 和 Python 之间进行接口的主要内容,如果未能解决你的问题,请参考以下文章