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自动化测试等)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】整数存储、大小端概念

文章目录 整数存储大小端 整数存储 在计算机中,整数都是通过二进制保存的,不论是十六进制还是八进制还是十进制 整数的2进制表⽰⽅法有三种,即原码、反码和补码 对于整形来说:数据存放内存中其实存放的是补码 在计算机系统中&…

LinuxU盘挂载原理,为什么要用到U盘挂载及实现U盘挂载

目录 一、U盘挂载原理 二、为什么要用到U盘挂载 三、实现U盘挂载 一、准备工作 1、安装gcc 2、下载ntfs-3g 3、解压 4、编译准备 5、编译并安装 二、挂载演示 一、U盘挂载原理 Linux的U盘挂载原理涉及以下几个方面: 设备识别:当您将U盘插入Lin…

DVWA 靶场搭建

文章目录 环境说明1 DVWA 简介2 DVWA 安装 环境说明 操作系统:Windows 10PHPStudy 版本: 8.1.1.3Apache 版本:2.4.39MySQL 版本 5.7.26 1 DVWA 简介 DVWA(Damn Vulnerable Web App)是一个基于 “PHP MySQL” 搭建的Web应用程序&…

Linux多进程中wait()函数学习

wait()函数是Linux/Unix系统里的一个系统级函数&#xff0c;在C语言中通过#include <sys/wait.h>包含该系统调用的头文件。 想要查看如何使用这个函数&#xff0c;可以在终端中输入&#xff1a; man 2 wait如下图&#xff1a; wait系统调用可以让父线程阻塞等待子线程的…

DM数据库安装及使用(Windows、Linux、docker)

Windows 先解压安装包 点击setup安装 下一步 勾选接受然后下一步 下一步 选择典型安装下一步 下一步 搜索DM数据库配置助手然后一直下一步 然后搜索DM管理工具 登录 登录成功 widows版本安装成功 Linux安装 操作系统CPU数据库CentOS7x86_64 架构dm8_20230418_x86_rh6_64 …

liunx安装达梦教程

1.首先用户在安装 DM 之前需要检查或修改操作系统的配置&#xff0c;以保证 DM 正确安装和运行。 标题及下文中提到的 Linux(Unix)&#xff0c;包括 Linux、AIX、HP-UNIX、Solaris 和 FreeBSD 操作系统。以下安装程序说明将以 Red Hat Enterprise Linux 6 for x86-64 系统为…

CSS案例-1.字体样式练习

效果 知识点 字体大小font-size 相对长度单位 说明 em 相对于当前对象内文本的字体尺寸 px 像素,最常用,推荐使用 绝对长度单位 说明 in 英寸 cm 厘米 mm 毫米 pt 点 Unicode字体 字体名称 英文名称 Unicode编码 宋体 SimSun \5B8B\4F53 新宋体 NSimSun \65B0\5B8B\4F53

mac电脑解决无法打开软件

文章目录 报错内容解决方法一方法二方法三 报错内容 macOS无法验证此App是否包含恶意软件。 解决方法一 打开系统偏好设置>安全性与隐私>通用&#xff0c;这个时候有个按钮&#xff0c;“仍然允许”点击即可。 方法二 按住Control键点按应用, 然后打开&#xff0c…

网络编程:TCP和UDP

一、通信模式 1.1 套接字socket 1.网络通信通过套接字进行数据传输 2.socket是一个函数&#xff0c;为通信创建一个端点&#xff0c;并返回该端点的文件描述符 3.套接字本身是一个文件描述符&#xff0c;对应的是一个特殊的文件&#xff0c;该文件描述符维护了两个缓冲区&a…

MySQL一些命令记录

查看数据引擎 show engines;创建数据库,并选择库 CREATE DATABASE IF NOT EXISTS test_database; USE test_database;创建表 CREATE TABLE IF NOT EXISTS test_table (id INT AUTO_INCREMENT PRIMARY KEY,field1 VARCHAR(50),field2 VARCHAR(50),field3 VARCHAR(50),field4 …

PHP中的反序列化漏洞

PHP中的反序列化漏洞 目录 PHP 中的序列化与反序列化 概述 序列化 基本类型的序列化 对象的序列化 反序列化 示例序列化与反序列化 反序列化漏洞 - PHP 中的魔术方法 - Typecho_v1.0 中的反序列化漏洞 POP链的构造思路 pop链案例 反序列化逃逸 字符串逃逸&#xff…

Linux安装使用one-api 格式访问所有的大模型

One API ✨ 通过标准的 OpenAI API 格式访问所有的大模型&#xff0c;开箱即用 ✨ [!NOTE] 本项目为开源项目&#xff0c;使用者必须在遵循 OpenAI 的使用条款以及法律法规的情况下使用&#xff0c;不得用于非法用途。 根据《生成式人工智能服务管理暂行办法》的要求&#xff…

Android 音频系统

导入 早期Linux版本采用的是OSS框架&#xff0c;它也是Unix及类Unix系统中广泛使用的一种音频体系。 ALSA是Linux社区为了取代OSS而提出的一种框架&#xff0c;是一个源代码完全开放的系统(遵循GNU GPL和GNU LGPL)。ALSA在Kernel 2.5版本中被正式引入后&#xff0c;OSS就逐步…

代码随想录day20(2)二叉树:完全二叉树节点个数(leetcode222)

题目要求&#xff1a;求一个完全二叉树的节点个数 思路&#xff1a;首先完全二叉树可以用普通二叉树的方法来求&#xff0c;但是需要遍历所有的节点。 但是对于完全二叉树来说&#xff0c;只有最底层右侧的节点可能没满&#xff0c;其余每层节点都达到了最大值。所以我们可以…

智慧城管:街面秩序沿街商铺视频可视化AI智能监管方案

一、背景分析 随着城市化的加速和商业活动的日益繁荣&#xff0c;沿街商铺的管理面临着越来越多的挑战。沿街商户的乱堆乱放、占道经营、违章停车等违法行为&#xff0c;一直以来都是城市管理中的难题。这不仅存在交通安全隐患&#xff0c;也造成了市容秩序混乱&#xff0c;严…

MFMailComposeViewController 发送邮件

通过 MFMailComposeViewController 发送邮件,需预先登录邮箱账号的情况下; 具体实现与配置参数请参考如下: 首先,引入 MFMailComposeViewController 库 #import <MessageUI/MessageUI.h> 其次,实现相关 api 方法 if ([MFMailComposeViewController canSendMail]) {MFM…

整型变量的原子操作

什么是原子操作 原子操作&#xff08;Atomic Operation&#xff09;是指不可中断的操作&#xff0c;即在多线程环境下&#xff0c;当一个线程在执行原子操作时&#xff0c;不会被其他线程的调度和中断所影响。这种操作在多线程编程中尤为重要&#xff0c;因为它能保证操作的原…

从零开始搭建医保购药APP:技术选择与开发流程

医保购药APP作为一种创新的医疗服务工具&#xff0c;为用户提供了便捷的医保购药流程&#xff0c;同时也为医疗机构提供了更高效的管理和服务方式。今天小编将为大家讲解如何从零开始搭建一款医保购药APP&#xff0c;包括技术选择和开发流程。 一、技术选择 在搭建医保购药APP…

openssl3.2 - note - Decoders and Encoders with OpenSSL

文章目录 openssl3.2 - note - Decoders and Encoders with OpenSSL概述笔记编码器/解码器的调用链OSSL_STORE 编码器/解码器的名称和属性OSSL_FUNC_decoder_freectx_fnOSSL_FUNC_encoder_encode_fn官方文档END openssl3.2 - note - Decoders and Encoders with OpenSSL 概述 …

js-循环返回多条数据,每条数据文本超过三行进行展开与收起的实现

1.基本需求 返回多条数据&#xff0c;每条数据在一定宽度的盒子内&#xff0c;文本超过三行进行文本的展开与收起 2.实现逻辑 对于返回的每条数据添加属性expend&#xff1a;false来在循环中进行对于展开收起的判断。 动态计算盒子宽度随着分辨率的变化而变化的值boxWidth。获…