PyQt5---初识PyQt5相关及开发实战介绍

什么是GUI

        GUI是Graphical User Interface(图形用户界面)的缩写,是一种用户与计算机交互的方式,通过使用图形化的元素(如按钮、窗口、菜单等)来帮助用户完成任务。GUI使得用户可以通过鼠标、键盘等输入设备与计算机进行交互,而不需要记住复杂的命令行操作。

        GUI的主要组成部分包括窗口、控件(组件)、布局管理器和事件处理器等。窗口是GUI应用程序的主要界面,控件是窗口中的各种元素,如按钮、文本框、标签等。布局管理器用于控制控件在窗口中的位置和大小,以便界面可以灵活地适应不同大小的窗口。事件处理器用于响应用户的操作,如点击按钮、输入文本等。

为什么要开发桌面应用

        桌面应用,也可以称为GUI应用,在Windows处于非常火爆的15年时间(19952010)里是非常火的,不过最近几年被Web应用和移动应用抢了风头。尽管Web和移动应用看似成为了现在的主流。但桌面应用目前仍然为很多类型应用的首选。移动应用由于屏幕太小,机器性能远低于同时代的PC机,所以至少目前来看,在短时间内移动应用是无法取代PC应用的,而在PC浏览器上运行的Web应用的主要优势是不需要安装,只要有浏览器就可以运行。

       但缺点也显而易见,Web应用在浏览器部分的逻辑代码通常都是由JavaScript语言编写的,运行效率比较低,而且Web应用是无法完全控制本机的硬件的,如摄像头,蓝牙设备,打印机、串口等,Web应用在用户体验上也不如同时代的桌面应用,而Web应用不擅长的事正好是桌面应用的强项,因此,在未来的几十年,桌面应用仍然会占有非常重要的地位。

GUI框架 

在GUI开发中,常用的工具和框架包括:

1.Qt:一个跨平台的GUI开发框架,提供了丰富的GUI组件和功能,PyQt、PySide等是基于Qt的Python库。

2.Tkinter:Python标准库中的GUI工具包,提供了简单的GUI组件和布局管理器,适用于快速开发简单的GUI应用程序。

3.wxPython:基于wxWidgets的Python GUI库,提供了丰富的跨平台GUI组件和功能。

4.Java Swing:Java语言的GUI工具包,提供了丰富的GUI组件和功能,适用于开发Java GUI应用程序。

5.PyGTK,是一个用于Python语言的GUI开发工具包,它是基于GTK+(GIMP Toolkit)库的Python绑定。GTK+是一个开源的跨平台的图形库,主要用于创建图形用户界面的程序,而PyGTK则提供了Python语言与GTK+库之间的接口,使得开发者能够使用Python语言来开发基于GTK+的GUI应用程序。

6.PySide是一个Python绑定的Qt库,用于创建跨平台的图形用户界面(GUI)应用程序。它允许开发者使用Python语言来访问Qt库的功能,从而能够快速、方便地开发功能强大的GUI应用程序。PySide最初是由Nokia开发并开源,后来由Digia继续维护和支持。

什么是Qt

        使用C++语言编写的跨平台GUI库,支持WindowsMac OS XLinux。由于Qt使用C++语言编写,所以使用Qt开发的GUI程序的界面风格与当前操作系统完全相同,而且运行效率很高。

GUI:带图形用户接口的程序,也就是我们经常说的桌面应用。

Qt的历史

        Qt是挪威的一家名为Trolltech(奇趣科技)的公司开发的一个C++ GUI工具集,其中包括跨平台类库、集成开发工具和跨平台IDE,既可以用于开发GUI程序,也可以用于开发非GUI程序。使用Qt开发的代码只需要在不同的操作系统平台上重新编译,就可以在该平台上运行。也就是说,用Qt开发的程序的跨平台模式是源代码级的。

     20086月,Trolltech公司被Nokia(诺基亚)收购,20128月,芬兰的Digia公司从Nokia收购了Qt业务。

Qt案例

什么是PyQt 

     PyQt是一个用于创建GUI应用程序的跨平台工具包,它将PythonQt库融为一体。也就是说,PyQt允许使用Python语言调用Qt库中的API。这样做的最大好处就是在保留了Qt高运行效率的同时,大大提高了开发效率。因为,使用Python语言开发程序要比使用C++语言开发程序快得多。PyQtQt做了完整的封装,几乎可以用PyQtQt能做的任何事情。

     由于目前最新的PyQt版本是5.11,所以习惯上成为PyQtPyQt5

     官网:https://riverbankcomputing.com/software/pyqt/

要学什么?

  • Qt Designer
  • PyQt5基本窗口控件(QMainWindowQwidgetQlabelQLineEdit菜单、工具栏等)
  • PyQt5高级组件(QTableViewQListView、容器、多线程等)
  • PyQt5布局管理(QBoxLayoutQGridLayoutQFormLayout、嵌套布局等)
  • PyQt5信号与槽(事件处理、数据传递等)
  • PyQt5图形与特效(定制窗口风格、绘图、QSSUI美化、不规则窗口、设置样式等)
  • PyQt5扩展应用(制作PyQt5安装程序、数据处理、第三方绘图库在PyQt5中的应用、UI自动化测试等)

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

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

相关文章

2024.3.17 机器学习周报

引言 Abstract 文献阅读 1、题目 R-TRANSFORMER: RECURRENT NEURAL NETWORK ENHANCED TRANSFORMER 2、引言 递归神经网络长期以来一直是序列建模的主要选择。然而,它严重遭受两个问题:在捕获非常长期的依赖性和无法并行化的顺序计算过程中无能为力…

【Javascript编程实操06】1、反转数组和字符串 2、将二维数组转一维数组

前言 1、反转数组和字符串 代码: 实现效果: 2、将二维数组转一维数组 代码: 实现效果: 总结 前言 本次主要是针对Javascript阶段的字符串与数组的实操练习,共有2个实操,大家可以在实操的过程中更加深…

程序人生——Java泛型和反射的使用建议

目录 引出泛型和反射建议93:Java的泛型是类型擦除的建议94:不能初始化泛型参数和数组建议95:强制声明泛型的实际类型 建议96:不同的场景使用不同的泛型通配符建议97:警惕泛型是不能协变和逆变的 建议98:建议…

基于springboot实现小区物业管理系统项目【项目源码+论文说明】

基于springboot实现小区物业管理系统演示 摘要 随着城镇人口居住的集中化加剧 ,传统人工小区管理模式逐渐跟不上时代的潮流。这就要求我们提供一个专门的管理系统。来提高物管的工作效率、为住户提供更好的服务。 物业管理系统运用现代化的计算机管理手段,使物业的…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的安全帽检测系统(深度学习模型+UI界面代码+训练数据集)

摘要:开发先进的安全帽识别系统对提升工作场所的安全性至关重要。本文详细介绍了使用深度学习技术创建此类系统的方法,并分享了完整的实现代码。系统采用了强大的YOLOv8算法,并对其与YOLOv7、YOLOv6、YOLOv5的性能进行了详细比较,…

MySQL:视图

1. 概述 在MySQL中,视图(View)是一个虚拟存在的表,其内容是由查询定义的。视图本身并不包含数据,它只包含一条SQL查询语句(即定义视图的SELECT语句)。当通过视图访问数据时,MySQL会执…

【SpringBoot3】整合Druid数据源和Mybatis 项目打包和运行

文章目录 一、整合Druid数据源二、整合Mybatis2.1 MyBatis整合步骤2.1 Mybatis整合实践2.1 声明式事务整合配置2.1 AOP整合配置 三、项目打包和运行命令启动和参数说明 总结web 与 springboot 打包区别JDK8的编译环境 执行17高版本jar 一、整合Druid数据源 创建模块 &#xff1…

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下

Fork - 将 GitHub 的某个特定仓库复制到自己的账户下 1. ForeverStrongCheng/OpenCV-tutorials2. Fork -> ForeverStrongCheng/R2CNN_Faster-RCNN_TensorflowReferences 访问仓库页面,点击 Fork 按钮创建自己的仓库。 Fork 是将 GitHub 的某个特定仓库复制到自己…

【Python编程基础】第一节.Python基本语法(上)

文章目录 前言⼀、Python介绍二、Python环境配置三、Pycharm 书写代码四、Python基本语法 4.1 print 函数的简单使用 4.2 注释 4.3 Python 代码中三种波浪线和 PEP8 4.4 在 cmd 终端中运⾏ Python 代码 4.5 变量 4.6 数据类型 4.7 类型转换…

【docker】docker的常用命令

📝个人主页:五敷有你 🔥系列专栏:中间件 ⛺️稳中求进,晒太阳 常规命令 docker version #查看docker 版本信息docker info #显示docker 的系统信息,包括镜像和容器数量docker --help #查看所有的命…

花钱买不到系列-linux信号[1]卷

我们下面要学的这个,信号,它呢就挺好玩的,虽然它也有一点点难,那么尤其是这里要进入第二阶段的进程地质空间的分享。 第一阶段,是当时在讲进程概念时,学了个进程地址空间,当时知道了地址空间页表…

基于大模型和向量数据库的 RAG 示例

1 RAG 介绍 RAG 是一种先进的自然语言处理方法,它结合了信息检索和文本生成技术,用于提高问答系统、聊天机器人等应用的性能。 2 RAG 的工作流程 文档加载(Document Loading) 从各种来源加载大量文档数据。这些文档…

操作系统——cpu、内存、缓存介绍

一、内存是什么 内存就是系统资源的代名词,它是其他硬件设备与 CPU 沟通的桥梁, 计算机中的所有程序都在内存中运行。其作用是暂时存放CPU的运算数据,以及与硬盘交换的数据。也是相当于CPU与硬盘沟通的桥梁。只要计算机在运行,CP…

应对恶意IP攻击的有效方法

在当今数字化时代,网络攻击已经成为了互联网安全的重大挑战之一。恶意IP攻击是网络安全领域中的一种常见威胁,它可能导致数据泄露、服务中断、系统瘫痪等严重后果。因此,有效地应对恶意IP攻击至关重要。IP数据云将深入探讨如何应对恶意IP攻击…

android中单例模式为什么会引起内存泄漏?

单例模式使用不恰当会造成内存泄漏。因为单例的静态特性使得单例的生命周期和应用的生命周期一样长, 如果一个对象已经不需要使用了,但是单例对象还持有该对象的引用,那么这个对象就不能被正常回收,因此会导致内存泄漏。 举个例子: ①新建一个工程。 ②配置好LeakCanary检…

SpringBoot Servlet容器启动解析

介绍 容器架构 容器处理请求 容器启动全局流程解析 启动前准备 WebServer创建入口 WebServer创建 Servlet启动 Web容器工厂类加载解析 Web容器个性化配置 属性注入 工厂类初始化 BeanPostProcessor方法实现 定制化流程 面试题 请描述下Servlet容器启动流程?介绍下…

下载程序到嵌入式开发板教程

一、设置共享目录 ubuntu与Window共同拥有的目录。 第一步:在Windows下创建一个文件夹share 第二部:点击虚拟机--->设置--->选项--->共享文件夹 进入共享目录的命令:cd/mnt/hgfs/share 二、C语言编译器 使用Linux平台下的gcc编…

发一下接口自动化测试框架(python3+requests+excel)

Git: https://github.com/lilinyu861/Interface-Test 环境配置: 开发工具:pycharm2018Excel 开发框架:python3requestsexcel 接口自动化测试框架介绍: 此接口测试框架,首先由用户设计原始的测试用例并为…

爬虫 某物流

目标地址 url "https://api.jdl.com/aging/feeInquiryNewByJDL" 加密参数 ciphertext和data 搜关键字ciphertext跟着栈走 很明显的DES加密 window globalconst e require(jsencrypt); // const e require(JSEncrypt) // e r(775).JSEncrypt // const t requi…

学点Java打小工_Day4_数组_冒泡排序

1 数组基本概念 程序算法数据结构 算法:解决程序的流程步骤 数据结构:将数据按照某种特定的结构来存储 设计良好的数据结构会导致良好的算法。 ArrayList、LinkedList 数组是最简单的数据结构。 数组:存放同一种类型数据的集合,在…