当前位置: 首页 > article >正文

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()  # 启动应用程序事件循环  

六、思维导图

相关文章:

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

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架,可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序,比如 控制台工具和服务器。Qt是面向对象的框架,使用特殊的代…...

DeepSeek+3D视觉机器人应用场景、前景和简单设计思路

DeepSeek3D视觉机器人在多个领域具有广泛的应用场景和巨大的前景。以下是详细的分析: 应用场景 制造业 自动化装配:机器人可以精确地抓取和装配零件,提高生产效率和产品质量。 质量检测:通过3D视觉技术检测产品缺陷,确…...

MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32

MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32 1. 获取代码:2. 加入你的项目2.1 以 STM32 为例:2.2 以 ESP-IDF 为例: 3. 对接 API3.1 以 STM32 为例: 4. 更多函数说明5. 写入 EEPROM 示例 MT6835 Framework 纯C语言实现,跨平台&…...

python视频爬虫

文章目录 爬虫的基本步骤一些工具模拟浏览器并监听文件视频爬取易错点一个代码示例参考 爬虫的基本步骤 1.抓包分析,利用浏览器的开发者工具 2.发送请求 3.获取数据 4.解析数据 5.保存数据 一些工具 requests, 用于发送请求,可以通过get,p…...

嵌入式WebRTC压缩至670K,目标将so动态库压缩至500K,.a静态库还可以更小

最近把EasyRTC的效果发布出去给各大IPC厂商体验了一下,直接就用EasyRTC与各个厂商的负责人进行的通话,在通话中,用户就反馈效果确实不错! 这两天有用户要在海思hi3516cv610上使用EasyRTC,工具链是:gcc-2024…...

Rhel Centos环境开关机自动脚本

Rhel Centos环境开关机自动脚本 1. 业务需求2. 解决方法2.1 rc.local2.2 rc.d2.3 systemd2.4 systemd附着的方法2.5 tuned 3. 测试 1. 业务需求 一台较老的服务器上面业务比较简单,提供一个简单的网站,但已经没有业务的运维人员. 想达到的效果: 由于是非标准的apache或者nginx…...

phpipam1.7安装部署

0软件说明 phpipam是一个开源Web IP地址管理应用程序(IPAM) phpipam官网:https://www.phpipam.net/ 1安装环境 操作系统:Rocky Linux9.5x86_64 phpipam版本:1.7 php版本:8.0.30 数据库版本&#xff1a…...

深入理解org.springframework.web.context.request.RequestContextHolder

在Spring Web应用中,RequestContextHolder是一个非常有用的工具类,用于在任何地方访问当前请求的上下文信息。它解决了非Controller层或非过滤器层需要访问请求上下文的问题,如在Service层或DAO层。以下是对 RequestContextHolder的详细解析。…...

Django中select_related 的作用

Django中这句代码Dynamic.objects.select_related(song)是什么意思? 在 Django 中,这句代码: Dynamic.objects.select_related(song) 的作用是 在查询 Dynamic 模型的同时,预加载 song 关联的外键对象,从而减少数据…...

正泰中间电磁继电器【8脚10A】DC24V 待机功率

需求:继电器能耗测试。 1.连接24V2A的电源, 2. 稳定功率为 1.4W 3. 正泰中间电磁继电器【8脚10A】直流DC24V 注:联通时电磁继电器会轻微发热 4.电磁继电器的工作原理基于电流的磁效应 电磁激励:电磁继电器主要由线圈、铁芯、衔…...

C++ 中的 Const 关键字(1)

C 中的 Const 关键字 最后更新: 2024 年 8 月 6 日 本文讨论了C中const 关键字的各种功能。只要将const 关键字附加到任何方法 ()、变量、指针变量以及类的对象上,它就会阻止特定对象/方法 ()/变量修改其数据项的值。 常量变量: 常量变量的声…...

Mac上搭建宝塔环境并部署PHP项目

安装Docker Desktop》搭建Centos版本的宝塔环境》部署PHP项目 1. 下载Docker for mac 软件:https://www.docker.com/ 或使用终端命令:brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统: docker pul…...

哈希表-两个数的交集

代码随想录-刷题笔记 349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 内容: 集合的使用 , 重复的数剔除掉&#xff0c;剩下的即为交集&#xff0c;最后加入数组即可。 class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer…...

win11 终端乱码导致IDE 各种输出也乱码

因为 win11 终端乱码导致IDE 各种输出也乱码导致作者对此十分头大。所以研究了各种方法。 单独设置终端编码对 HKEY_CURRENT_USER\Console 注册表进行修改对 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processo 注册表进行修改使用命令[Console]::OutputEncoding [Syst…...

LabVIEW用户界面(UI)和用户体验(UX)设计

作为一名 LabVIEW 开发者&#xff0c;满足功能需求、保障使用便捷与灵活只是基础要求。在如今这个用户体验至上的时代&#xff0c;为 LabVIEW 应用程序设计直观且具有美学感的界面&#xff0c;同样是不容忽视的关键任务。一个优秀的界面设计&#xff0c;不仅能提升用户对程序的…...

23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。

在使用这个非线性激活函数的时候&#xff0c;其实我们重点还是学习的是他们的正向怎么传播&#xff0c;以及反向怎么传递的。 如下图所示&#xff1a; 第一&#xff1a;relu函数的正向传播函数是&#xff1a;当输入值&#xff08;隐藏层&#xff09;值大于了&#xff0c;就输出…...

【matlab优化算法-16期】基于遗传算法的电热气及储能综合优化项目实践

电热气及储能综合优化项目实践 一、前言 随着能源转型和可持续发展的推进&#xff0c;综合能源系统的优化逐渐成为研究热点。本文介绍了一个电热气及储能综合优化项目&#xff0c;旨在通过优化算法实现多能源系统的协同运行&#xff0c;提高能源利用效率&#xff0c;降低运行…...

单例模式和单例Bean

单例模式 定义&#xff1a;单例模式是一种软件设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问这个实例。 实现方式 饿汉式&#xff1a;在类加载时就立即创建单例实例&#xff0c;线程安全&#xff0c;调用效率高&#xff0c;但可能会造成…...

springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…...

DeepSeek系统崩溃 | 极验服务如何为爆火应用筑起安全防线?

引言 极验服务让您的产品站在风口之时&#xff0c;不必担心爆红是灾难的开始&#xff0c;而是期待其成为驱动持续创新的全新起点。 01现象级狂欢背后&#xff0c;你的业务安全防线抗得住吗&#xff1f; “近期DeepSeek线上服务受到大规模恶意攻击&#xff0c;注册可能繁忙&am…...

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本

vcredist_x64.exe 是 Microsoft Visual C++ Redistributable 的 64 位版本,它提供了运行基于 Visual C++ 编写的应用程序所需的库文件。许多 Windows 应用程序都依赖这些库来正常运行,特别是使用 Visual Studio 编译的程序。 用途和重要性: 运行时库:vcredist_x64.exe 安装…...

Spring:Spring实现AOP的通俗理解(有源码跟踪)

目录标题 AOP定义SpringAOP和AspectJ联系Spring如何实现AOPAOP的代理对象AOP的代理对象生成过程 AOP定义 AOP &#xff08;Aspect Orient Programming&#xff09;&#xff1a;直译过来就是 面向切面编程。AOP 是一种编程思想用途&#xff1a;Transactions &#xff08;事务调…...

kotlin-kapt

kotlin-kapt kotlin-kapt 是 Kotlin 的一个插件&#xff0c;专门用于处理注解处理器&#xff08;Annotation Processor&#xff09;。以下是对该插件的详细解释和指南&#xff1a; kotlin-kapt 是什么&#xff1f; kotlin-kapt 是 Kotlin 官方提供的一个插件&#xff0c;用于在…...

Linux中getifaddrs函数

文章目录 **函数原型****参数****返回值****释放资源****`struct ifaddrs` 结构****示例代码****输出示例****相关函数****总结**getifaddrs 是 Linux(以及其他 Unix-like 系统)中用于获取本机网络接口信息的系统调用。它提供了一种简单的方法来获取所有网络接口的地址信息,…...

java后端开发day15--字符串(一)

&#xff08;以下内容全部来自上述课程&#xff09; 1.API &#xff08;Application Programming Interface 应用程序编程接口&#xff09; 1.简单理解 简单理解&#xff1a;API就是别人已经写好的东西&#xff0c;我们不需要自己编写&#xff0c;直接使用即可。 Java API&…...

vue项目 Axios创建拦截器

Axios 1. Axios 和 Ajax 简介2. Axios 和 Ajax 的区别3. 从 按钮 到 Axios请求后端接口的 大致顺序 1. Axios 和 Ajax 简介 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09; 不是一种技术&#xff0c;而是一个编程技术概念&#xff0c;核心是通过 XMLHttpReques…...

NLP面试之-激活函数

一、动机篇 1.1 为什么要有激活函数&#xff1f; 数据角度&#xff1a;由于数据是线性不可分的&#xff0c;如果采用线性化&#xff0c;那么需要复杂的线性组合去逼近问题&#xff0c;因此需要非线性变换对数据分布进行重新映射;线性模型的表达力问题&#xff1a;由于线性模型…...

深入探究 Go 语言中的 Fx 框架:依赖注入的强大工具

在软件开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是一种重要的设计模式&#xff0c;它可以帮助我们降低代码的耦合度&#xff0c;提高代码的可测试性和可维护性。Go 语言作为一门高效、简洁的编程语言&#xff0c;拥有许多优…...

Notepad++ 中删除所有以 “pdf“ 结尾的行

Notepad 中删除所有以 “pdf” 结尾的行 操作步骤 1.打开文件&#xff1a; 在 Notepad 中打开你需要处理的文本文件。 2.打开查找和替换对话框&#xff1a; 按快捷键 Ctrl F&#xff0c;打开“查找和替换”对话框。 3.启用正则表达式模式&#xff1a; 在对话框的底部&#xf…...

b站——《【强化学习】一小时完全入门》学习笔记及代码(1-3 多臂老虎机)

问题陈述 我们有两个多臂老虎机&#xff08;Multi-Armed Bandit&#xff09;&#xff0c;分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布&#xff1a; 左边的老虎机&#xff1a;奖励服从均值为 500&#xff0c;标准差为 50 的正态分布&#xff0c;即…...