Qt和PyQt和PySide之间的关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt和PyQt和PySide之间的关系相关的知识,希望对你有一定的参考价值。


Qt:是qt公司用c++语言写的一整套界面程序开发库。具有非常丰富的资料。LGPL协议。

PySide:为了支持python语言使用这个qt库,所以qt公司搞了个PySide这个封装库,也就是通过python语言编程,但是底层调用的就是qt库,通过这个PySide这个封装库,用户就只需要编写python语言即可创建界面程序啦。但是配套资料非常少(说明qt公司不主推这个玩意),只能通过c++版的qt库的资料照猫画虎的看。LGPL协议。

PyQt:另外一个公司也是为了支持python语言使用这个qt库,自己搞了这个PyQt封装库,但是资料丰富很多,使用的人好像更多,他们搞这个比qt公司做PySide还早。但是是GPL协议。这个协议对于商用不友好。官网 ​​Riverbank Computing | News​​​    另一个可参考网站​​Learn Python PyQt | Learn Python PyQt​

python如何实现调用qt库的

这里的关键问题在于,python能调用qt原生库吗(c++写的,编译成的各种xx.dll),直接的话是不行的,需要通过一个叫做sip的工具,它可以把qt原生库封装成python绑定(应该是对这些xx.dll做了一层封装,好像是变成了xx.pyd文件)(绑定是作为一组 Python 模块实现的,包含 1,000 多个类。​​Riverbank Computing | Introduction​​),然后python语言写的程序中就能直接调用这些库了(而且方法的名字,参数都是一样的,方便了c++开发qt的人和pyqt开发的人互相代码参考了)。​​qt和python关系_Qt/PyQt 概谈

所以pyqt编写的程序打包出来后,调用的库,就是xx.pyd。我们还会看到一个对应的xx.pyi文件,这个是给IDE用的(IDE中写程序调用这些xx.pyd中的函数,才知道有哪些,如何用),用于代码智能提示的。

所以xx.pyd就相当于c/c++程序中的xx.dll文件,而xx.pyi就相当于c/c++程序中的xx.h文件。使用区别就是:python程序开发中,不需要include xx.pyi,而c/c++程序开发中,需要include xx.h文件。​​Python pyi文件_hxxjxw的

参考博客:

​​PySide2和PyQt5区别_生化环材的博客

​​第15.5节 PyQt的历史沿革介绍 - 老猿Python

其它可以了解的:关于加速python的方法,Cython和Python,CPython之间的关系

​​Cython 是什么?为什么会有 Cython?_Python猫的博客

python开发的程序,虽然是解释性执行,但是也可以打包成一个exe文件,原理就是把解释器打包进来了,但是这个exe内部:还是解释器在一条一条的解释执行这个python脚本,所以运行速度不会变快。​​编译成exe,的Python脚本运行速度会变快吗? - 知乎​

python编译后的结果文件.pyc文件,可以反编译为python源码文件,用工具 Easy Python Decompiler。​​Python文件.py||.pyi||.pyc||.pyo||.pyd等各种文件后缀区别_permike的博客

以上是关于Qt和PyQt和PySide之间的关系的主要内容,如果未能解决你的问题,请参考以下文章

Qt Box —— PyQt & PySide的便捷开发助手

Qt Box —— PyQt & PySide的便捷开发助手

在 PyQt5 和 PySide2 中覆盖paintEvent

模型中 dropActions 的访问值 (PySide/PyQt/Qt)

PySide2 与 Pyqt5 的区别

模型数据未更改时刷新视图(Qt/PySide/PyQt)?