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

【PyQt5】python可视化开发:PyQt5介绍,开发环境搭建快速入门

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,云原生K8S,人工智能,js逆向,App逆向,网络系统安全,数据分析,PyQt5,tkinter,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:PyQt5桌面应用开发,零基础到进阶应用实战
景天的主页:景天科技苑

文章目录

  • PyQt框架简介
    • PyQt5特点
    • Qt与PyQt的关系
  • PyQt5环境搭建
    • PyQt5安装
    • 辅助工具安装
    • PyQt5Designer
    • 总结和联系
  • PyQt5应该学哪些内容

Python可以说是世界上最广泛、最简单的编程语言之一,Qt可以说是世界上最好的程序开发库之一。
Python与Qt结合的产物就是PyQt,因此,PyQt就成了Python中程序开发最棒的库之一(当然,笔者认为它在Python程序开发中就是最棒的)。
由于PyQt是Python与Qt的结合,所以它既可以利用Python强大而又简洁的语法,又不会丢失Qt强大的功能。
从Python的角度来说,凡是Python涉及的所有简洁、易用性的语法,PyQt都可以使用;凡是Python涉及的所有开源模块,PyQt也都可以使用。
从Qt的角度来说,由于PyQt完成了对Qt的所有类的封装,因此,从理论上说,使用Qt能开发出来的东西,使用PyQt也可以开发出来,
因此,PyQt可以利用Qt强大的功能。
由于充分利用了双方的优点,所以PyQt在开发程序的过程中会带来一些意想不到的收获,
利用Python的简洁语法与强大而又丰富的生态圈,有些程序逻辑在Qt中实现会比较复杂,而在PyQt中却很简单,这才是PyQt最大的魅力
之处。

PyQt框架简介

在目前的软件设计过程中,图形用户界面(GUI)的设计相当重要,美观、易用的用户界面能够在很大程度上提高软件的使用量,因此许多软件都在用户界面上倾注了大量的精力。
在介绍PyQt框架之前,我们先来了解什么是图形用户界面(GUI)。

百度百科:GUI词条
GUI是Graphical User Interface的英文简称,即图形用户界面,准确地说,GUI就是屏幕产品的视觉体验和互动操作部分。
GUI是一种结合计算机科学、美学、心理学、行为学及各商业领域需求分析的人机系统工程,强调人—机—环境三者作为一个系统进行总体设计。

Python最初是作为一门脚本语言开发的,并不具备GUI功能,但由于其本身具有良好的可扩展性,能够不断地通过C/C++模块进行功能性扩展,因此目前已经有相当多的GUI控件集(Toolkit)可以在Python中使用了。
在Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg,其中PyQt是Qt为Python专门提供的GUI扩展。

Qt是挪威Trolltech(奇趣科技公司)开发的一个C++GUI应用程序,其包括跨平台类库、集成开发工具和跨平台IDE,既可以用于开发GUI程序,也可以用于开发非GUI程序。
使用Qt只需开发一次应用程序,便可跨不同桌面和嵌入式操作系统部署该应用程序,而无须重新编写源代码。
和Python一样,Qt也具有相当优秀的跨平台特性,使用Qt开发的应用程序能够在Windows、Linux和Mac OS平台之间轻松移植。
2008年6月,Trolltech被Nokia(诺基亚)收购,Qt也因此成为诺基亚旗下的编程语言工具;
2012年8月,Qt业务又被芬兰IT业务供应商Digia从诺基亚手中全面收购。
现在的Qt既有开源版本,也有商业版本,Digia通过开源授权(LGPL和GPL)以及商业授权的方式对Qt进行授权。
开源软件需要解决的最大问题是如何处理开发者使用开源软件来完成个人或商业目标的情况,其中包括版权与收益的问题。
当一个软件开发者打算将自己写的代码开源时,通常选择自由软件协议,即GPL(GNU General Public License,GNU通用公共许可证)。
因此,PyQt 5选择了GPL协议,所以开发者可以放心使用PyQt 5开发软件。

PyQt5特点

自从Qt移植到Python上形成PyQt框架以来,已开发出PyQt 3、PyQt 4和PyQt5三个版本。PyQt于1998年首次发布,当时名字叫PyKDE,如今改名为PyQt并提供GPL版和商业版。

注意:
PyQt5严格遵循Qt的发布许可,拥有双重协议,自由开发者可以选择使用免费的GPL版本,如果准备将PyQt用于商业活动,则必须为此交付商业许可费用。

最后,让我们来看看Qt官网(https://www.qt.io/cn/)上的官方宣传壁纸,如图所示,答案就在其中。
在这里插入图片描述

pyqt官网
https://www.riverbankcomputing.com/software/pyqt/intro
在这里插入图片描述

PyQt正受到越来越多的Python程序员的喜爱,这是因为PyQt具有如下优秀的特性。
基于高性能的Qt的GUI控件集。
能够跨平台运行在Windows、Linux和Mac OS等系统上。
使用信号/槽(signal/slot)机制进行通信。
对Qt库的完全封装。
可以使用Qt成熟的IDE(如Qt Designer)进行图形界面设计,并自动生成可执行的Python代码。
提供了一整套种类繁多的窗口控件。

Qt与PyQt的关系

首先,PyQt是Qt框架的Python语言实现。PyQt提供了一个设计良好的窗口控件集合,每一个PyQt控件都有其对应的Qt控件。
所以PyQt与Qt的类库和API非常详细,而且PyQt不再使用qmake系统和Q_OBJECT宏,使得PyQt再也没有编译链接错误,PyQt的代码也更加友好。

其次,在开发速度上,由于PyQt的核心就是Qt库,也是用C++编写的,所以即使逻辑代码运行速度慢一点,也不会成为性能瓶颈。
在使用方式上,PyQt也没有失去Python的优雅语法、快速开发的能力。
Python相对于C++的优点是在编程效率上,可以看到标准的Qt例子移植到PyQt后的代码具有相同的功能,使用相同的应用程序接口,Python版本的代码只有原来的50%~60%,而且更容易阅读。
在开发效率上,由于Python是一种面向对象的语言,语法简单、高效,相对于C++而言,使用Python编写程序可以提高开发效率,减少开发成本。

最后,PyQt向Python程序员提供了使用完整的Qt应用程序接口的函数,几乎可以用Python做任何Qt能做的事。
Qt和PyQt的设计都是完全面向对象的。Qt使用一种称为信号/槽的机制在窗口控件之间传递事件和消息。
这种机制完全不同于其他图形界面开发库所采用的回调(callback)机制,使用信号/槽可以使程序更加安全和简洁。
所开发的应用程序越大,Qt/PyQt的这个优势就越明显。

PyQt5环境搭建

本节讲解如何在最常见的PC操作系统平台上配置PyQt 5开发环境,包括搭建Python 3解释器环境和编程库等。
目前pyqt5最新的版本是5.15.10 支持python最高的版本是python3.9 所以要使用pyqt5,最高python版本不能超过3.9
首先,我们在pycharm中创建个基于python3.9虚拟环境的项目
在这里插入图片描述

PyQt5安装

PyQt5 是一个Python库,它是Qt库的Python绑定。Qt是一个广泛使用的C++框架,用于开发跨平台的应用程序。PyQt5提供了一整套丰富的功能和部件,使得开发复杂的GUI应用程序变得相对简单。
功能:
提供了用于创建桌面应用程序的工具和部件。
支持窗口、小部件、事件处理、图形视图等。
支持国际化、线程、数据库等功能。

安装:

pip install PyQt5

辅助工具安装

pyqt5-tools 是一个辅助工具包,包含了一些额外的工具,用于简化使用PyQt5开发应用程序的过程。它包括了一些用于开发和调试PyQt5应用程序的实用工具,比如Qt Designer、Qt Linguist等。
功能:
提供了Qt Designer工具,可以用来设计GUI界面并生成相应的Python代码。
包含一些开发过程中有用的命令行工具和脚本。

安装:

pip install PyQt5-tools

使用: 安装后,pyqt5-tools 包含的工具(如Qt Designer)可以通过命令行启动。例如

pyqt5-tools designer

注意,pyqt5和pyqt5-tools 版本要一致,PyQt5-tools目前最新版本是5.15.9。我之前安装了pyqt5.15.10,此时程序自动卸载了pyqt5.15.10。重新安装了pyqt5.15.9

PyQt5Designer

PyQt5Designer 通常是指Qt Designer,这是一个图形化的工具,用于设计和布局应用程序的用户界面。虽然PyQt5本身不包含Qt Designer,但安装pyqt5-tools后可以使用Qt Designer。
功能:
提供拖放式界面设计,生成.ui文件。
支持添加窗口、小部件、布局管理等。
可以通过pyuic5工具将.ui文件转换为Python代码。
使用: 在安装pyqt5-tools之后,可以通过命令启动Qt Designer:
pyqt5-tools designer

总结和联系

PyQt5 是核心库,提供了Qt框架的Python绑定,用于开发GUI应用程序。
pyqt5-tools 是一个辅助工具包,包含了一些开发工具(如Qt Designer),帮助开发者更方便地设计和调试PyQt5应用程序。
PyQt5Designer 是指Qt Designer工具,它是一个图形界面设计器,可以通过pyqt5-tools安装和使用。

安装完成后,测试下是否安装成功
我们创建个py文件
尝试导入包PyQt5,查看是否有问题

from PyQt5.Qt import *

运行没报错,表示环境搭建成功
在这里插入图片描述

PyQt5应该学哪些内容

1.了解你所选择的pyqt5库
2.基本程序结构–跑通GUI程序,能够看到一个界面
3.掌握各种控件的特性和使用

  • 能够知道每个控件都有什么作用,能解决什么需求
  • 知道该怎样去使用这个控件

4.掌握控件的样式使用

  • 怎样能把控件的样式搞的好看一点,比如颜色,边框等等

5.资源的加载

  • 怎样加载资源,展示在GUI控件中

6.控件的布局

  • 怎样把各个单独的控件摆放的更协调,更美观

7.事件和信号

  • 怎样能够让用户点击或者做其他交互操作的时候,我们能让程序做事情

8.动画特效

  • 怎样能够在与用户交互的时候,展示炫酷的动画

9.界面跳转

  • 从一个窗口,跳转到另外一个窗口

10.设计工具使用

  • 通过辅助工具来设计界面

11.额外

  网络多线程数据库文件操作绘图多媒体定时器定位国际化...

相关文章:

  • YOLOv8中文分类标签显示问题解决
  • Windows桌面运维----第四天
  • 基于Java的高校校园点餐系统
  • c中编程题最有效率的方法算出2乘以8等於几
  • SpringBootWeb 篇-入门了解 Spring Cache 、Spring Task 与 WebSocket 框架
  • FPGA早鸟课程第二弹 | Vivado 设计静态时序分析和实际约束
  • SSL证书怎样配置部署更安全?
  • 18-云原生监控体系-kube-state-metrics
  • 海南聚广众达电子商务咨询有限公司抖音电商新引擎
  • 汽车IVI中控开发入门及进阶(三十一):视频知识扫盲
  • 阿里云ECS(CentOS/Alibaba Cloud Linux)安装最新 Docker 方法
  • C++初学者指南第一步---7.控制流(基础)
  • Unity3D 大地图分块:分块编辑小AStar地图详解
  • PHP框架之symfony框架
  • 铁路定向声波冲击波智能驱鸟器
  • Asm.js的简单介绍
  • CAP理论的例子讲解
  • laravel with 查询列表限制条数
  • mysql中InnoDB引擎中页的概念
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • ReactNativeweexDeviceOne对比
  • Redis 中的布隆过滤器
  • spring + angular 实现导出excel
  • SpringCloud集成分布式事务LCN (一)
  • swift基础之_对象 实例方法 对象方法。
  • 闭包--闭包作用之保存(一)
  • 简单基于spring的redis配置(单机和集群模式)
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微信开源mars源码分析1—上层samples分析
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 优秀架构师必须掌握的架构思维
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • #70结构体案例1(导师,学生,成绩)
  • #Z0458. 树的中心2
  • $$$$GB2312-80区位编码表$$$$
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (二十四)Flask之flask-session组件
  • (算法)Game
  • ***检测工具之RKHunter AIDE
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .Net mvc总结
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net和php怎么连接,php和apache之间如何连接
  • .net解析传过来的xml_DOM4J解析XML文件
  • @Value读取properties中文乱码解决方案
  • @vue-office/excel 解决移动端预览excel文件触发软键盘
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [20171102]视图v$session中process字段含义
  • [C++][ProtoBuf][初识ProtoBuf]详细讲解
  • [Deepin 15] 编译安装 MySQL-5.6.35
  • [Doc][px4][ros2][gazebo][yolov8]PX4-ROS2-Gazebo-YOLOv8
  • [Eclipse] 详细设置护眼背景色和字体颜色并导出
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档