Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、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 进行了模块化改进,有些模块被拆分或重命名。例如,QtWidgetsQtGui 和 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()  # 启动应用程序事件循环  

六、思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15735.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】双向链表(真正的零基础)

链表是一种物理存储单元上非连续、非顺序的存储结构。数据元素的逻辑顺序是通过指针的链接来实现的!在上篇我们学习了单向链表,而单向链表虽然空间利用率高,插入和删除也只需改变指针就可以达到!但是我们在每次查找、删除、访问..…

pip3命令全解析:Python3包管理工具的详细使用指南

pip3命令全解析:Python3包管理工具的详细使用指南 一、基本使用二、升级和更新三、其他常用命令四、换源操作五、注意事项六、帮助信息pip3命令使用说明 pip3 是 Python 3 的包管理工具,用于安装、升级和卸载 Python 3 的包。以下是 pip3 的常用命令及详细说明: 一、基本使…

开启对话式智能分析新纪元——Wyn商业智能 BI 携手Deepseek 驱动数据分析变革

2月18号,Wyn 商业智能 V8.0Update1 版本将重磅推出对话式智能分析,集成Deepseek R1大模型,通过AI技术的深度融合,致力于打造"会思考的BI系统",让数据价值触手可及,助力企业实现从数据洞察到决策执…

使用PyCharm创建项目以及如何注释代码

创建好项目后会出现如下图所示的画面,我们可以通过在项目文件夹上点击鼠标右键,选择“New”菜单下的“Python File”来创建一个 Python 文件,在给文件命名时建议使用英文字母和下划线的组合,创建好的 Python 文件会自动打开&#…

第三个Qt开发实例:利用之前已经开发好的LED驱动在Qt生成的界面中控制LED2的亮和灭

前言 上一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145459006 中,我们是直接利用GPIO子系统控制了LED2的亮和灭,这篇博文中我们利用之前写好的LED驱动程序在Qt的生成的界面中控制LED2的亮和灭。 之前已经在下面两篇博文中实现了LED驱动…

【Unity】性能优化:UI的合批 图集和优化

目录 前言一、合批测试二、图集 前言 注意:DC指的是Draw Call。 温馨小提示:Frame Debugger 窗口(菜单:Window > Analysis > Frame Debugger)会显示绘制调用信息,并允许您控制正在构建的帧的“回放”…

【安当产品应用案例100集】037-强化OpenVPN安全防线的卓越之选——安当ASP身份认证系统

在当前数字化时代,网络安全已成为企业发展的重要组成部分。对于使用OpenVPN的企业而言,确保远程访问的安全性尤为重要。安当ASP身份认证系统凭借其强大的功能和便捷的集成方式,为OpenVPN的二次登录认证提供了理想的解决方案,特别是…

表单与交互:HTML表单标签全面解析

目录 前言 一.HTML表单的基本结构 基本结构 示例 二.常用表单控件 文本输入框 选择控件 文件上传 按钮 综合案例 三.标签的作用 四.注意事项 前言 HTML&#xff08;超文本标记语言&#xff09;是构建网页的基础&#xff0c;其中表单&#xff08;<form>&…

python卷积神经网络人脸识别示例实现详解

目录 一、准备 1&#xff09;使用pytorch 2&#xff09;安装pytorch 3&#xff09;准备训练和测试资源 二、卷积神经网络的基本结构 三、代码实现 1&#xff09;导入库 2&#xff09;数据预处理 3&#xff09;加载数据 4&#xff09;构建一个卷积神经网络 5&#xff0…

防御保护-----前言

HCIE安全防御 前言 计算机病毒 ​ 蠕虫病毒----->具备蠕虫特性的病毒&#xff1a;1&#xff0c;繁殖性特别强&#xff08;自我繁殖&#xff09;&#xff1b;2&#xff0c;具备破坏性 蠕虫病毒是一种常见的计算机病毒&#xff0c;其名称来源于它的传播方式类似于自然界中…

java和vue开发的图书馆借阅管理系统小程序

主要功能&#xff1a; 学生借书还书&#xff0c;管理员管理图书管理学生借书还书。系统显示在馆数量和图书总数量&#xff0c;借书时借书数量不可超过在馆数量&#xff0c;还书时需要输入归还数量&#xff08;可借2本书&#xff0c;归还的时候一本一本归还&#xff0c;可查看归…

【R】Dijkstra算法求最短路径

使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data&#xff0c;存放有向图信息 data中每个点所在的行序号为起始点序号&#xff0c;列为终点序号。 比如&#xff1a;值4的坐标为(1,2)即点1到点2距离为4&#xff1b;值8的坐标为(6,7)…

Oracle的学习心得和知识总结(三十三)|Oracle数据库数据库的SQL ID的底层计算原理分析

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

将DeepSeek接入Excel实现交互式对话

引言 将DeepSeek接入Excel&#xff0c;为你带来前所未有的交互体验&#xff01;“哪里不懂&#xff0c;选中哪里”&#xff0c;然后直接在侧边栏对话框向DeepSeek发问&#xff0c;非常地方便&#xff01; 案例演示 设置接入方式 既可以通过本地部署的DeepSeek接入Excel&#…

在npm上传属于自己的包

最近在整理代码&#xff0c;上传到npm方便使用&#xff0c;所以学习了如何在npm发布一个包&#xff0c;整理写成一篇文章和大家一起交流。 1、注册npm账号 npm | Home 2、确保是登录状态 &#xff08;在包目录下&#xff0c;终端执行 npm login) 按enter键自动打开页面&…

JS宏进阶:XMLHttpRequest对象

一、概述 XMLHttpRequest简称XHR&#xff0c;它是一个可以在JavaScript中使用的对象&#xff0c;用于在后台与服务器交换数据&#xff0c;实现页面的局部更新&#xff0c;而无需重新加载整个页面&#xff0c;也是Ajax&#xff08;Asynchronous JavaScript and XML&#xff09;…

【快应用】多语言适配案例

【关键词】 多语言,$t 【问题背景】 快应用平台的能力会覆盖多个国家地区,平台支持多语言的能力后,可以让一个快应同时支持多个语言版本的切换,开发者无需开发多个不同语言的源码项目,避免给项目维护带来困难。使用系统默认的语言,开发者配置多语言的方式非常简单,只…

PyQt学习记录

0. 安装配置 0.1 安装相关库 首先打开你的PyCharm程序&#xff0c;然后新建一个目录用于学习&#xff0c;其次在terminal中输入 pip install pyqt5如果你不具有科学上网能力&#xff0c;请改为国内源 pip install pyqt5 -i https://pypi.douban.com/simple然后安装pyqt相关…

【多模态大模型】系列3:语义分割(LSeg、GroupViT)

目录 1 LSeg2 Group ViT 1 LSeg LANGUAGE-DRIVEN SEMANTIC SEGMENTATION LSeg是第一篇将CLIP应用于语义分割的论文。它的分割的效果拔群&#xff0c;容错能力也很高&#xff1a; 模型总览图跟CLIP很像&#xff1a; 对于图像链路&#xff1a;输入一张图片&#xff0c;进入分割…

【深度学习】多目标融合算法(四):多门混合专家网络MMOE(Multi-gate Mixture-of-Experts)

目录 一、引言 二、MMoE&#xff08;Multi-gate Mixture-of-Experts&#xff0c;多门混合专家网络&#xff09; 2.1 技术原理 2.2 技术优缺点 2.3 业务代码实践 2.3.1 业务场景与建模 2.3.2 模型代码实现 2.3.3 模型训练与推理测试 2.3.4 打印模型结构 三、总结 一、…