gpt4 book ai didi

python - 是否可以将 C++ 小部件嵌入到 PyQt 应用程序中?

转载 作者:搜寻专家 更新时间:2023-10-31 00:28:42 24 4
gpt4 key购买 nike

我有一个 PyQt5 应用程序和大多数用 Python 编写的小部件。我想用 C++ Qt 编写一些小部件以使其更快,然后将其嵌入到我的 PyQt QMainWindow 中。

这可能吗?

最佳答案

您可以使用 SIP 从 python 中执行用 C++ 创建的小部件,在以下 link 中我展示了一个如何做到这一点的例子。

示例结构如下:

├── configure.py
├── sip
│   ├── AnalogClock.sip
│   └── PyAnalogClock.sip
└── src
├── analogclock.cpp
├── analogclock.h
├── analogclockl_global.h
└── AnalogClock.pro

在 src 文件夹中,您必须创建小部件库

在 sip 文件夹中,您必须放置要公开的类的结构:

模拟时钟.sip

%Import QtGui/QtGuimod.sip
%Import QtWidgets/QtWidgetsmod.sip

%If (Qt_5_0_0 -)

class AnalogClock : public QWidget{

%TypeHeaderCode
#include "analogclock.h"
%End

public:
AnalogClock(QWidget *parent /TransferThis/ = 0);

protected:
virtual void resizeEvent(QResizeEvent *);
virtual void paintEvent(QPaintEvent *e);
};

%End

PyAnalogClock.sip

%Module(name=PyAnalogClock, call_super_init=True, keyword_arguments="Optional")
%DefaultMetatype PyQt5.QtCore.pyqtWrapperType
%DefaultSupertype sip.simplewrapper
%Include AnalogClock.sip

configure.py是配置项目编译的脚本,如果有问题一定要修改一些路径(已在Linux下测试过)

然后通过执行以下命令进行编译:

python configure.py
make
sudo make install

当执行前一个时,它会生成一个名为 modules 的文件夹,里面是动态库,在示例 PyAnalogClock.so 的情况下,我们将这个文件放在文件夹中源代码:

.
├── main.py
└── PyAnalogClock.so

主.py

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyAnalogClock import AnalogClock

if __name__=="__main__":
import sys

a=QApplication(sys.argv)
w=AnalogClock()
w.show()
sys.exit(a.exec_())

输出:

enter image description here

关于python - 是否可以将 C++ 小部件嵌入到 PyQt 应用程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44258808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com