【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.额外

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

shop APP UI

APP和微信小程序不一样, APP的客户端需要两个(一个安卓,一个苹果IOS); APP的服务端需要(管理端后台,接口);

qml:导入B站Up主的FluentUI插件

文章目录 文章介绍如何加载1、下载代码2、官方文档和组件介绍 运行FluentUI新建自己的qml项目,并导入FluentUI 文章介绍 up主“会磨刀的小猪”模仿微软Fluent风格写的界面,可以理解为用qt和qml写出的win10/win11风格的界面,比原本的qt风格好…

uni-app 表格tr添加点击事件

首先找到uni.tr这个组件的页面,路径uni_modules/uni-table/components/uni-tr/uni-tr.vue 然后添加点击事件 在你的表格页面就可以添加点击事件了

【Java】已解决java.util.concurrent.TimeoutException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.util.concurrent.TimeoutException异常 一、问题背景 java.util.concurrent.TimeoutException是Java并发编程中常见的一个异常,它通常发生在使用Future或Future…

基于Java的高校校园点餐系统

开头语: 你好,我是计算机专业的学长,如果你对高校校园点餐系统感兴趣或有相关开发需求,欢迎联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:Eclipse、Tomcat 系统展示…

网络校时服务器:铁路对时有妙招

在信息高速发展的今天,铁路作为国家的经济大动脉,与广大市民生活息息相关,担负着运送大流量乘客、保证交通畅通的重任,为了保证列车的正点运行和乘客的行程,对时间精准度的要求是非常严格的。随着我国铁路的发展速度和…

WPF三方UI库全局应用MessageBox样式(.NET6版本)

一、问题场景 使用HandyControl简写HC 作为基础UI组件库时,希望系统中所有的MessageBox 样式都使用HC的MessageBox,常规操作如下: 在对应的xxxx.cs 顶部使用using 指定特定类的命名空间。 using MessageBox HandyControl.Controls.Message…

华为---OSPF多区域配置(二)

9.2 OSPF多区域配置 9.2.1 原理概述 在OSPF单区域中,每台路由器都需要收集其他所有路由器的链路状态信息,如果网络规模不断扩大,链路状态信息也会随之不断增多,这将使得单台路由器上链路状态数据库非常庞大,导致路由…

基于Pytorch框架的深度学习Swin-Transformer神经网络食物分类系统源码

第一步:准备数据 5种鸟类数据:self.class_indict ["苹果派", "猪小排", "果仁蜜饼", "生牛肉薄片", "鞑靼牛肉"] ,总共有5000张图片,每个文件夹单独放一种数据 第二步&…

期望28K,5.14日蚂蚁java社招一面(杭州)

面经哥只做互联网社招面试经历分享,关注我,每日推送精选面经,面试前,先找面经哥 1、线程池的几个参数? 2、一道关于线程池的代码题目,数据库中存任务,通过一个有10个核心线程和无限队列的线程池…

基于springboot实现宠物商城网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现宠物商城网站管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,商品信息因为其管理内容繁杂&#xff…

C#.Net筑基-类型系统②常见类型

01、结构体类型Struct 结构体 struct 是一种用户自定义的值类型,常用于定义一些简单(轻量)的数据结构。对于一些局部使用的数据结构,优先使用结构体,效率要高很多。 可以有构造函数,也可以没有。因此初始…

数据结构:4.1.2二叉搜索树的插入

整个框架和FInd函数的实现是一样的&#xff0c;但是也有不同&#xff08;注意&#xff09; 35>30 向30的右子树 35<41 向41的左子树 35>33 向33的右子树&#xff0c;但33右边为空&#xff0c;所以35就挂在33的右边 因为要把35挂在33的右边&#xff0c;所以要把33的…

前端路线指导(2):前端基础版学习路线

前端基础路线的细节&#xff1a; 哈喽大家好&#xff01;我是小粉&#xff0c;双一流本科 自学前端一年&#xff0c;收获腾讯&#xff0c;字节等9家互联网大厂offer&#xff0c;秋招面试通过率100%&#xff0c;其中半数offer为ssp&#xff08;薪资最高档&#xff09; 以下是我根…

Houdini到UE地形流程

目录 Houidni地形制作 UE地形设置 Houdini engine插件安装 B站参考视频 Houidni地形制作 使用Terrain的HeightField相关节点制作地形&#xff1b;设置地形相关的材质层&#xff08;如rock、soil、grass等&#xff09;&#xff0c;注意材质的重叠&#xff1b; //detail层级&…

Stable Diffusion 3 大模型文生图实践

windows教程2024年最新Stable Diffusion本地化部署详细攻略&#xff0c;手把手教程&#xff08;建议收藏!!)_stable diffusion 本地部署-CSDN博客 linux本地安装教程 1.前期准备工作 1&#xff09;创建conda环境 conda create --name stable3 python3.10 2&#xff09;下…

一种基于非线性滤波过程的旋转机械故障诊断方法(MATLAB)

在众多的旋转机械故障诊断方法中&#xff0c;包络分析&#xff0c;又称为共振解调技术&#xff0c;是目前应用最为成功的方法之一。首先&#xff0c;对激励引起的共振频带进行带通滤波&#xff0c;然后对滤波信号进行包络谱分析&#xff0c;通过识别包络谱中的故障相关的特征频…

代码随想录——全排列(Leetcode LCR083)

题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();boolean[] used;public List<List<Integer>> permute(int[] nums) {used new bo…

数据资产安全保卫战:构建多层次、全方位的数据安全防护体系,守护企业核心数据资产安全

一、引言 在信息化时代&#xff0c;数据资产已成为企业运营的核心&#xff0c;其安全性直接关系到企业的生存与发展。然而&#xff0c;随着网络技术的飞速发展&#xff0c;数据泄露、黑客攻击等安全威胁日益增多&#xff0c;给企业的数据资产安全带来了严峻挑战。因此&#xf…

基于esp-idf的arm2d移植

什么是ARM2D Arm在Github上发布了一个专门针对“全体” Cortex-M处理器的2D图形加速库——Arm-2D 我们可以简单的把这个2D图形加速库理解为是一个专门针对Cortex-M处理器的标准“显卡驱动”。虽然这里的“显卡驱动”只是一个夸张的说法——似乎没有哪个Cortex-M处理器“配得上…