一、QT与PyQT的概念和特点
1.1、QT
QT是一个1991年由The Qt Company开发的跨平台C++图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象 编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正 的组件编程。2008年Qt Company科技被诺基亚公司收购,随后4年里,因各种原因 最终导致于2012年,被Digia公司收购。
平台支持:QT支持多个操作系统,包括Windows、macOS、Linux、Android和 iOS等,使开发人员能够轻松地开发一次代码,然后在不同平台上部署和运行应 用程序。
GUI开发:QT提供了一套强大的GUI库,可以快速创建现代化的用户界面。它包 括丰富的UI控件、布局管理器、绘图和图像处理工具,使开发人员能够创建各种 各样的用户界面。
信号与槽机制:QT引入了一种名为"信号与槽"的机制,用于处理对象之间的通信 和事件处理。这种机制使开发人员能够轻松地实现应用程序的事件响应和数据传 递。
数据库访问:QT提供了对多种数据库的支持,包括MySQL、SQLite、Oracle和 Microsoft SQL Server等。它提供了一套完整的API,使开发人员能够方便地连 接、查询和操作数据库。
网络编程:QT提供了网络编程的支持,包括TCP/IP和UDP通信、HTTP请求和响 应、FTP传输等。它使开发人员能够构建具有网络功能的应用程序,如客户端-服 务器应用程序和网络通信工具。
多媒体功能:QT具有丰富的多媒体功能,包括音频和视频播放、图像处理和操 作、摄像头和音频设备访问等。它提供了一套简单易用的API,使开发人员能够 轻松地集成多媒体功能到应用程序中。
总之,QT是一个功能强大的C++应用程序开发框架,具有跨平台支持、GUI开 发、信号与槽机制、数据库访问、网络编程和多媒体功能等特点。它被广泛应用 于各种领域的应用程序开发,包括桌面软件、移动应用、嵌入式系统和图形化界 面工具等。
1.2、PyQT
PyQt 是一个用于创建桌面应用程序的 Python 框架,它是基于 Qt 库的 Python 绑 定。用于开发图形用户界面、网络应用、数据库驱动和其他各种应用程序。PyQt 提 供了对 Qt 库的 Python 封装,使得开发者可以使用 Python 编程语言来利用 Qt 的强 大功能。
1.2.1、pyqt5
PyQt5 是 Riverbank Computing 开发的 GUI 小部件工具包的最新版本。它是 Qt 的 Python 接口,是最强大和流行的跨平台 GUI 库之一。
PyQt5 是 Python 编程语言和 Qt 库的混合体。 所以说PyQt5就是Python的图 形界面开发库。 程序的用户交互界面,称为UI(User interface)。通过使用PyQt5库,我们可 以快速制作自己的小工具。
pyqt5优势:
1.文档齐全:PyQt是对Qt库的一个绑定,且保持了Qt库原有的API,因此PyQt除了可 以使用自己的文档,也几乎可以通用Qt的文档。
2.稳定性高:PyQt使用C++开发,底层使用Qt库,因此比纯Python的GUI库更加稳定 可靠。PyQt支持跨平台开发,而且保持着和Qt库的同步更新,因此在不同的操作系统和 Python版本下都有良好的兼容性。
3.生态支持:PyQt拥有一个活跃的社区和丰富的第三方库支持,可以方便地实现各种功 能,如数据库操作、图形绘制、图像处理等。另外,PyQt作者也开发了一些扩展包,如 PyQtChart、PyQtDataVisualization等,使得绘制图表和数据可视化变得更加容易。
4.开源免费:PyQt5采用双开源协议,第一种采用GPL(GNU General Public License)协议,开发人员可以免费使用PyQt5(但你的应用也必须遵循GPL协议即源代码 公开),第二种商业许可证,如果你不想公开你的源码,或者不希望遵守GPL协议,那么你 可以购买PyQt5的商业许可证,即可不公开程序源码。这使得PyQt在开源界和商业界都有 广泛的应用和支持。
应用:
1.游戏开发,虽然 PyQT5 主要用于创建用户界面,但它也可以用于游戏开发,尤其是 那些注重故事叙述和角色交互的图形冒险游戏。
2.自动化和控制系统,PyQT5 可以用于创建监控和控制系统,它提供了对信号和槽机制 的支持,这有助于实现复杂的事件处理逻辑。
3.桌面应用程序,它提供了丰富的控件和组件,以及强大的布局管理器,使得开发者可 以轻松地创建具有复杂界面的应用程序。
4.嵌入式开发,PyQT5 可以用于创建定制的硬件设备上的应用程序。
1.2.2、 pyqt6
PyQt6 是一个功能强大的 Python 库,用于创建跨平台的图形用户界面应用程序。它是 Qt 应用程序框架的 Python 绑定,Qt 是一个广泛使用的 C++ 库。
PyQt6: 绑定到 Qt 6.x 系列。Qt 6 是对 Qt 5 的重大更新,包含许多功能增强和重构。
在 PyQt6 中,许多类和方法的名称和参数进行了更改,有些过时或不再支持。
PyQt6 进行了模块化改进,有些模块被拆分或重命名。例如,
QtWidgets
、QtGui
和QtCore
模块在 PyQt6 中的使用方式有所调整,某些类可能需要从不同的模块导入。PyQt6 使用 Python 的原生类型,而 PyQt5 除了提供信号与槽的传统方式外,还允许使用老式的字符串形式来定义信号和槽。
PyQt6 在类型提示方面更为严格,鼓励类型注释。这有助于开发人员在使用 IDE 时获得更好的补全和错误提示。
Qt 6 在渲染和性能方面做了一些改进,支持更现代的图形技术(如 Vulkan),使得图形和动画的展示更加流畅。
Qt 6 引入了许多新的功能,例如对 3D 图形的增强支持、改进的多媒体处理、对高 DPI 显示器的更好支持等,这些特性在 PyQt6 中也得到了体现。
由于 API 的更改,PyQt5 和 PyQt6 之间的代码不一定可以互换。如果你正在开发新项目,建议使用 PyQt6,因为它将提供最新的功能和更好的支持。
二、PySide与PyQt的区别
2.1、 什么是Pyside
PySide,最初是由是由Nokia公司开发,现在由 Qt 公司维护,它是 Qt 框架的另一 个 Python 绑定。PySide2 是针对 Qt 5 的版本,而 PySide6 是针对最新 Qt 6 版本的 Python 绑定。PySide是跨平台的图形使用界面框架Qt的Python版本。提供和PyQt 类似的功能,并兼容API。但与PyQt不同处为使用LGPL许可。他是一个专门用于创建 GUI的库,可以在Python中使用,也可以在不同的操作系统上使用 (linux&windows)。此外大多数的DCC软件都使用它,比如Maya、houdini和 Blender等。Pyside基于QT的C++框架。
2.2、Pyside与PyQt的区别
2.2.1、许可协议
PyQt5 提供了两种许可选项:GPL 和商业许可。使用 GPL 许可证时,你的应用 程序必须开源;如果选择商业许可,则需要付费。
PySide采用LGPL(GNU Lesser General Public License)开源协议,LGPL是一 个较为宽松的开源协议,与 GPL 相比,它允许商业软件在不公开源代码的情况下 使用 LGPL 许可的库。这意味着你可以使用 PySide 来开发商业应用程序,而不 必开源你的整个应用程序,只需确保对 PySide 本身所做的任何修改是开源的。
2.2.2、开发和维护
PySide 由 The Qt Company 维护,它是 Qt 框架的官方 Python 绑定。
PyQt5 由 Riverbank Computing 维护,它是一个第三方解决方案。
2.2.3、API 兼容性
PySide 和 PyQt5的 API 非常相似,但并不完全相同。在某些情况下,类名、方法 名或参数可能会有所不同。因此,从一个库迁移到另一个库可能需要一些代码修 改。
2.2.4、性能
在性能方面,PySide 和 PyQt5 通常非常相似,因为它们都依赖于相同的 Qt 库。 但是,具体性能可能会因实现细节和优化而有所不同。
三、PyQT的安装
pip install PyQt5==5.15.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
四、PyQT工具的导入配置
4.1、 PyQT工具
PyQt Tools 是 PyQt 框架提供的一组工具,主要用于辅助 PyQt 应用程序的开发和设计
pip install PyQt5-tools==5.15.9.3.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
PyQt Tools 中常见的工具:
1. Qt Designer: 这是一个可视化的用户界面设计器,允许开发者通过拖放方式设 计和布局应用程序的界面。设计好的界面可以保存为.ui 文件,然后可以使用 pyuic 工具将其转换为相应的 Python 代码,以便在 PyQt 应用程序中使用。
2. PyUIC: 这是一个用于将 Qt Designer 设计的 .ui 文件转换为对应的 Python 代 码的命令行工具。通过这个工具,可以将可视化设计的用户界面集成到 PyQt 项 目中。
3. PyRCC: 用于将 Qt 资源文件 (.qrc) 编译成 Python 模块的工具。Qt 资源文件可 以包含图像、文本文件等,通过编译可以将这些资源文件嵌入到 PyQt 应用程序 中,方便统一管理。
4. Pylupdate: 用于更新 Qt 项目的翻译文件 (.ts)。这在多语言支持的应用程序中 很有用,可以提供不同语言的界面翻译。
4.2、PyQT工具在Pycharm中配置
在 PyCharm 中导入 PyQt 工具通常是通过设置外部工具(External Tools)来完成 的。
1. 打开 PyCharm: 打开你的 PyCharm IDE。
2. 进入设置(Settings): 在顶部菜单栏中,选择 "File" -> "Settings"(在 macOS 上是 "PyCharm" -> "Preferences")。
3. 选择 External Tools: 在设置窗口左侧的导航栏中,展开 "Tools" 节点,并选择 "External Tools"。
4. 添加外部工具: 在右侧窗格中,点击 "+"(添加)按钮,然后选择 "Program"。
5. 填写外部工具信息: 在弹出的对话框中,填写以下信息:
Name(名称): 工具的名称,例如 "pyuic" 或 "Qt Designer"。
Group(组): 可选,可以将工具分组,这样可以更好地组织工具列表。
Description(描述): 工具的描述,用于说明工具的作用。
Program(程序): 工具的可执行文件路径。例如,对于 pyuic,你需要指定 它的完整路径,通常是在虚拟环境中的 Scripts(Windows)或 bin (Linux/Mac)目录中。
Arguments(参数): 传递给工具的参数。对于 pyuic,这可能是一些选项和 输入文件的路径。
Working Directory(工作目录): 工具运行时的工作目录,通常可以设置为 你的项目根目录。
Qt Designer,图形化布局工具:
D:\Anaconda3\envs\over_project\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
(程序路径:填写自己的该程序的位置)
$FileDir$ (当前文件夹)
$ProjectFileDir$ (绝对路径)
PyUIC,图形界面转py:
D:\Anaconda3\envs\over_project\Scripts\pyuic5.exe
(程序路径:填写自己的该程序的位置)
$FileName$ -o $FileNameWithoutExtension$.py (当前文件转为.py文件)
$FileDir$
Pyrcc ,资源转py:
D:\Anaconda3\envs\over_project\Scripts\pyrcc5.exe
(程序路径:填写自己的该程序的位置)
$FileName$ -o $FileNameWithoutExtension$_rc.py (当前文件转为.py文 件)
$FileDir$
五、第一个pyqt程序界面
import sys
from PyQt5.QtWidgets import QApplication,QWidgetif __name__ == '__main__':app = QApplication(sys.argv) # 创建QApplication对象,接受命令行参数windows = QWidget() # 创建一个QWidget窗口对象windows.setWindowTitle('第一个PyQt程序') # 设置窗口标题为'第一个PyQt程序'windows.show() # 显示窗口app.exec() # 启动应用程序事件循环