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

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是面向对象的框架,使用特殊的代…...

算法笔记 02 —— 入门模拟

本系列为胡凡编著的算法笔记当中代码部分的精简版整理,笔者也在同时准备Leetcode刷题和实习面试,希望为有一定编码和数据结构基础的同学提供一份系统型的参考,以方便遗忘时的算法查阅、期末复习总览以及C学习参照。 目录 01 简单模拟 Ⅰ害…...

PyTorch 源码学习:从 Tensor 到 Storage

分享自己在学习 PyTorch 源码时阅读过的资料。本文重点关注 PyTorch 的核心数据结构 Tensor 的设计与实现。因为 PyTorch 不同版本的源码实现有所不同,所以笔者在整理资料时尽可能按版本号升序,版本号见标题前[]。最新版本的源码实现还请查看 PyTorch 仓…...

uniapp 使用 鸿蒙开源字体

uniapp vue3 使用 鸿蒙开源字体 我的需求是全局使用鸿蒙字体。 所以: 0. 首先下载鸿蒙字体: 鸿蒙资源 下载后解压,发现里面有几个文件夹: 字体名称说明Sans默认的鸿蒙字体,支持基本的多语言字符(包括字…...

LabVIEW多电机CANopen同步

核心问题与解决方案 通信层配置 节点ID与波特率冲突问题:在多电机系统中,节点ID重复或波特率不匹配常导致通信中断或数据丢失。案例:某3轴贴片机因步科驱动器的默认节点ID均为1,触发了总线仲裁错误。解决方案:通过配置…...

每日定投40刀BTC(2)20250209 - 20250212

行路吟 青山叠叠水迢迢, 步履虽艰志未消。 莫问前程几多苦, 长风破浪自逍遥。...

【LeetCode Hot100 子串】和为 k 的子数组、滑动窗口最大值、最小覆盖子串

子串 1. 和为 k 的子数组题目描述解题思路主要思路步骤 时间复杂度与空间复杂度代码实现 2. 滑动窗口最大值题目描述解题思路双端队列的原理:优化步骤: Java实现 3. 最小覆盖子串题目描述解题思路滑动窗口的基本思路:具体步骤:算法…...

某虚拟页式存储管理系统中有一个程序占8个页面,运行时访问页面的顺序是1,2,3,4,5,3,4,1,6,7,8,7,8,5。假设刚开始内存没有预装入任何页面。

某虚拟页式存储管理系统中有一个程序占8个页面,运行时访问页面的顺序是1,2,3,4,5,3,4,1,6,7,8,7,8,5。假设刚开始内存没有预装入任何页面。 (1) 如果采用LRU调度算法,该程序在得到4块内存空间时,会产生多少次缺页中断?请给出详细…...

傅里叶公式推导(三)

文章目录 周期 2L周期T 周期 2L 周期 T 2 L T2L T2L 的傅里叶变换 即 f ( t ) f ( t 2 L ) f(t) f(t2L) f(t)f(t2L) xt2 π \pi π 2 L 2L 2L 原公式 f ( x ) a 0 2 ∑ n 1 ∞ [ a n cos ⁡ n x b n sin ⁡ n x ] a 0 1 π ∫ − π π f ( x ) d x a n 1 π ∫…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_time_update函数

定义在 src\core\ngx_times.c 中 ngx_time_init 函数后面 void ngx_time_update(void) {u_char *p0, *p1, *p2, *p3, *p4;ngx_tm_t tm, gmt;time_t sec;ngx_uint_t msec;ngx_time_t *tp;struct timeval tv;if (!ngx_trylock(&ngx…...

老牌系统工具箱,现在还能打!

今天给大家分享一款超实用的电脑软硬件检测工具,虽然它是一款比较“资深”的软件,但依然非常好用,完全能满足我们的日常需求。 电脑软硬件维护检测工具 功能强大易用 这款软件非常贴心,完全不需要安装,直接打开就能用…...

mysql error1449解决方法

MySQL Error 1449 错误信息为 “The user specified as a definer (userhost) does not exist”,意思是定义者(创建存储过程、函数、触发器等数据库对象时指定的用户)在当前系统中不存在,从而导致无法正常使用这些对象。以下是针对…...

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

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

归并排序 和 七大算法的总结图

目录 什么是递归排序: 图解: 递归方法: 代码实现: 思路分析: 非递归方法: 思路: 代码实现: 思路分析: 什么是递归排序: 先将数据分解成诺干个序列&#xff0…...

嵌入式硬件篇---原码、补码、反码

文章目录 前言简介八进制原码、反码、补码1. 原码规则示例问题 2. 反码规则示例问题 3. 补码规则示例优点 4. 补码的运算5. 总结 十六进制原码、反码、补码1. 十六进制的基本概念2. 十六进制的原码规则示例 3. 十六进制的反码规则示例 4. 十六进制的补码规则示例 5. 十六进制补…...

评估多智能体协作网络(MACNET)的性能:COT和AUTOGPT基线方法

评估多智能体协作网络(MACNET)的性能 方法选择:选择COT(思维链,Chain of Thought)、AUTOGPT等作为基线方法。 COT是一种通过在推理过程中生成中间推理步骤,来增强语言模型推理能力的方法,能让模型更好地处理复杂问题,比如在数学问题求解中,展示解题步骤。 AUTOGPT则是…...

洛谷题目: P2398 GCD SUM 题解 (本题较难,省选-难度)

题目传送门: P2398 GCD SUM - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 本题涉及到 欧拉函数,素数判断,质数,筛法 ,三大知识点,相对来说还是比较难的。 本题要求我们计算 …...

kubernetes-cni 框架源码分析

深入探索 Kubernetes 网络模型和网络通信 Kubernetes 定义了一种简单、一致的网络模型,基于扁平网络结构的设计,无需将主机端口与网络端口进行映射便可以进行高效地通讯,也无需其他组件进行转发。该模型也使应用程序很容易从虚拟机或者主机物…...

AI Agent有哪些痛点问题

AI Agent有哪些痛点问题 目录 AI Agent有哪些痛点问题AI Agent领域有哪些知名的论文缺乏一个将智能多智能体技术和在真实环境中学习的两个适用流程结合起来的统一框架LLM的代理在量化和客观评估方面存在挑战自主代理在动态环境中学习、推理和驾驭不确定性存在挑战AI Agent领域有…...

使用Java爬虫获取京东JD.item_sku API接口数据

在电商领域,商品的SKU(Stock Keeping Unit)信息是运营和管理的关键数据。SKU信息包括商品的规格、价格、库存等,对于商家的库存管理、定价策略和市场分析至关重要。京东作为国内领先的电商平台,提供了丰富的API接口&am…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...

给网站添加live2d看板娘

给网站添加live2d看板娘 参考文献: stevenjoezhang/live2d-widget: 把萌萌哒的看板娘抱回家 (ノ≧∇≦)ノ | Live2D widget for web platformEikanya/Live2d-model: Live2d model collectionzenghongtu/live2d-model-assets 前言 网站环境如下,文章也主…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...