PyQt官网:https://riverbankcomputing.com/software/pyqt/intro
PyQt简介
PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.
Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg
其中PyQt是Qt(c++语言实现的)为Python专门提供的扩展
Qt
Qt 是一个1991年由Qt Company开发的跨平台C++图形用户界面开发框架。
2008年,Qt Company被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。
2012年,Qt被Digia收购。
2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布
PyQt
- 基础高性能的Qt的图形界面控件集
- 能够跨平台运行在windows、linux和macos等系统上
- 使用
信号/槽(signal/slot)
机制进行通信(其它语言采用回调方式) - 对Qt库的完全封装
关于PyQt和PySide
首先推荐的就是PyQt,PyQt是Qt的Python版本,而Qt是一种成熟的GUI开发框架,底层是由C++开发而成,采用PyQt开发GUI,后面可以进一步转C++开发Qt,因此,如果想要入手图形用户界面开发,PyQt是非常推荐的一款框架,需要注意的是,PyQt有两种许可协议,分别是GPLv3许可证和需要购买版权的商业许可证,GPLv3是强开源协议,意味着,如果你的应用程序里面使用了PyQt,那么你的程序必须开源,否则可能收到法院传票,如果想要闭源商用,就必须购买Riverbank Computing公司的商业许可证。
但如果你既想享受Qt的强大功能,又想闭源商用,那么PySide适合你,说到PySide,就不得不说Qt与PyQt之间的恩怨,Qt的研发公司是Nokia,Riverbank Computing公司使用Python封装了Qt研发出PyQt,而PyQt从诞生时就是GPLv3协议,因此Nokia与Riverbank Computing谈判,希望将PyQt的协议修改为LGPLv3,可以带来更多的商业用户,但是两个公司谈崩了,所以Nokia自己重新研发了Py版本的Qt也就是PySide,后来Nokia将Qt和PySide卖给了Digia公司。PySide官网:https://doc.qt.io/qtforpython-6/
总结:
- 如果不做商业项目,强烈建议使用PyQt,资料多,稳定。全局替换成PySide也很方便。
- 需要开发闭源商用软件的就用PySide。所有API用起来几乎一样。
- PyQt5的对应版本是PySide2
通过pip安装PyQt5
pip install PyQt5
安装PyQt5
pip install PyQt5-tools
安装Qt
工具软件pip install PyQt5-stubs
安装PyQt5语法检测包(可选)
安装完成之后可以在Python的安装目录/Lib/site-packages
中找到PyQt5目录。
路径示例:%LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages
如果安装缓慢,请配置pip源:
pip包管理工具
无法运行处理
如果运行PyQt程序报如下错误,不报错不需要配置!:
则将如下变量添加到系统环境中:QT_QPA_PLATFORM_PLUGIN_PATH
值为:%LOCALAPPDATA%\Programs\Python\Python39\Lib\site-packages\PyQt5\Qt5\plugins\platforms
重启编辑器或控制台即可
:::info
注意这里的%LOCALAPPDATA%\Programs\Python\Python39
是你的Python安装路径,如果安装时不是默认路径,请将此部分内容替换成自己的安装路径。
建议直接使用Everything搜索qoffscreen.dll,找到目录
:::
VSCode配置PYQT插件
安装PYQT Integration
插件,可以帮我们自动生成UI相关代码和资源。最好进行如下配置:
- 配置
.ui
生成的.py
文件中导入资源的路径:--import-from=ui
指向ui目录 - 配置
designer.exe
可执行程序的路径,例如我的路径:D:\Programs\Python\Python39\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
- 在Python安装路径下找
designer.exe
,建议用everything搜索designer.exe
。如果搜不到,请先确保已安装PyQt5-tools
, 安装方法:pip install PyQt5-tools
其他不用变