【嵌入式学习5】PyQt5模块介绍、创建第一个窗口

目录

1、PyQt介绍

①特点

②主要组件

2、创建第一个窗口

exce_()


1、PyQt介绍

        PyQt 是一个用于创建图形用户界面(GUI)应用程序的 Python 库,它是 Qt 框架的 Python 绑定。

①特点
  • 跨平台:支持多种操作系统,包括 Windows、macOS 和 Linux
  • 丰富的控件库:PyQt 提供了大量预定义的控件,如按钮、文本框、列表框、菜单、工具栏等
  • 信号与槽机制:信号与槽是一种通信机制,用于在对象之间传递消息。当某个事件发生时(如用户点击按钮),会发出一个信号,然后连接到一个槽(即一个函数),槽函数会被调用以处理该事件。
  • 支持多种编程范围:支持面向对象编程,开发者可以创建自定义的控件类,继承自 PyQt 的控件类,并重写其方法来实现特定的功能
  • 与Python深度集成:PyQt 无缝集成到 Python 中,可以方便地与其他 Python 库(如 NumPy、Matplotlib 等)结合使用
②主要组件
QtWidgets构建用户界面的主要模块QPushButton(按钮)、QLabel(标签)、QLineEdit(文本输入框)、QTextEdit(多行文本框)、QTableView(表格视图)等
QtGui与图形相关的功能QPainter 用于绘图操作,QFont 用于字体设置,QColor 用于颜色管理
QtCore提供了基础的类和工具,如信号与槽机制、定时器、数据结构等QObject 是 PyQt 中所有对象的基类,它支持信号与槽的功能
QtMultimedia处理多媒体内容音频和视频播放,处理多媒体的内容和调用摄像头
QtNetwork网络编程功能支持 TCP/IP 和 UDP 等协议,可以用于开发网络应用程序

·其他模块:QtBluetooth[蓝牙]、QtPositioningp[定位]、QtSql[处理数据库]、QtTest[测试PyQt5应用]等..

2、创建第一个窗口

思考:需要窗口什么组件?

需要构建QtWidgets用户界面模块,QApplication初始化应用程序资源(窗口系统,事件循环等..),还需要sys模块实现sys.exit()方法退出程序

import sys
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtGui import QIconclass MyWindow(QWidget):def __init__(self):# 调用父类的初始化方法super().__init__()# 定义自己的属性self.setWindowTitle("自定义窗口")self.resize(400,300)self.setwindowIcon(QIcon('a.png'))self.setToolTip('这是一个气泡提示')# 自定义绘制self.setStyleSheet("background-color:lightblue")if __name__ == '__main__':# sys.argv 是一个包含命令行参数的列表,QApplication 会解析这些参数并进行相应的处理app = QApplication(sys.argv)# 创建自定义窗口window = MyWindow()window.show()# exce()是QApplacation中的一种方法sys.exit(app.exec_())
exce_()
  • 启动事件循环:exec_() 方法会启动一个事件循环持续运行,直到用户关闭应用程序或程序主动退出
  • 处理事件:在事件循环中,QApplication 会监听各种事件(如鼠标事件、键盘事件、窗口事件等),并将这些事件分发给相应的控件进行处理。
  • 保持应用程序运行:事件循环会阻止程序继续执行后续代码,直到事件循环结束。exec_() 通常位于程序的最后,确保应用程序在用户关闭窗口之前一直运行。

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

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

相关文章

封装自己的api签名sdk

api平台接口调用,需要通过签名去核对是不是有效的用户,,一般会给两个key,acceeKey 和 secretKey,第一个相当于用户名,第二个相当于密钥,,,前端通过一定的算法,&#xff0…

很简单 的 将字幕生成视频的 方法

一、一键将字幕生成视频的 方法 1、下载任性动图 10.7 以上版本 2、设置背景 1)背景大小 拉伸背景到合适大小,或者选择右侧比例 2)、直接空背景,设置背景颜色等详细信息 3)、或者 复制或者突然图片做背景 3、设置文…

Spring 核心技术解析【纯干货版】- XXI:Spring 第三方工具整合模块 Spring-Context-Suppor 模块精讲

在企业级开发中,我们经常需要与 第三方工具 进行集成,如 邮件发送、任务调度、缓存管理等。Spring 为此提供了 Spring-Context-Support 模块,它封装了多个常见的第三方工具库,使得开发者可以更方便地将它们集成到 Spring 项目中。…

c++柔性数组、友元、类模版

目录 1、柔性数组: 2、友元函数: 3、静态成员 注意事项 面试题:c/c static的作用? C语言: C: 为什么可以创建出 objx 4、对象与对象之间的关系 5、类模版 1、柔性数组: #define _CRT_SECURE_NO_WARNINGS #…

主相机绑定小地图

资源初始化:在类中通过 property 装饰器定义主相机、小地图相机、小地图精灵等资源属性,便于在编辑器中赋值。在 start 方法里,当确认这些资源存在后,创建渲染纹理并设置其大小,将渲染纹理与小地图相机关联&#xff0c…

linux-core分析-柔性数组越界访问

文章目录 core的调用栈core分析修改修改原因柔性数组定义代码修改总结core的调用栈 vocb core 崩溃:core的大小都是573M左右 Program terminated with signal SIGSEGV, Segmentation fault. #0 0x0000007f789af0d0 in strlen () from /lib/libc.so.6[Current thread is 1 (LW…

leetcode 代码随想录 数组-区间和

题目 给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。 输入: 第一行输入:为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间&…

部署nerdctl工具

nerdctl 是一个专为Containerd设计的容器管理命令行工具,旨在提供类似 Docker 的用户体验,同时支持 Containerd 的高级特性(如命名空间、compose等)。 1、下载安装 wget https://github.com/containerd/nerdctl/releases/downlo…

【论文笔记】DeepSeek-R1 技术报告

最强开源LLM,性能和效果都很棒;在数学、代码这种有标准正确答案的场景,表现尤为突出;一些其他场景的效果,可能不如DeepSeek-V3和Qwen。 Deepseek-R1没有使用传统的有监督微调sft方法来优化模型,而使用了大规…

YOLO学习笔记 | 基于YOLOv5的车辆行人重识别算法研究(附matlab代码)

基于YOLOv5的车辆行人重识别算法研究 🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥🥥 摘要 本文提出了一种基于YOLOv5的车辆行人重识别(ReID)算法,结合目标检测与特征匹配技术,实现高效的多目标跟踪与识别。通过引入注意力机制、优化损失函数和轻量化网络结构…

Buildroot与Yocto介绍比对

Buildroot 和 Yocto 是嵌入式 Linux 领域最常用的两大系统构建工具,它们在功能定位、使用方法和适用场景上有显著差异。以下从专业角度对两者进行对比分析: 一、Buildroot 核心功能与特点 1. 功能定位 轻量级系统构建工具:专注于快速生成精…

VUE3初始化项目安装

本次就是作为实验使用,包括安装过程中遇到的问题,供大家提供参考,话不多说,看过程: 第1步:首先分别安装node.js和npm,这步网上有很多资料,很简单,过程省略了&#xff0c…

GO语言学习(17)Gorm的数据库操作

目录 🏆前言 1.Gorm的简介 2.GORM连接数据库 2.1 配置DSN Mysql,TiDB,MariaDB PostgreSQL SQL Server SQLite 2.2 gorm.Open连接数据库 3.数据库连接池的配置 4.使用GORM对数据库进行操作(重点) 4.1 创…

【JavaEE】网络原理详解

1.❤️❤️前言~🥳🎉🎉🎉 Hello, Hello~ 亲爱的朋友们👋👋,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏📖📖。如果你对我的…

第十五届蓝桥杯单片机省赛程序设计试题

同时也是积分赛——测量NE555输出脉冲频率 第十五届 蓝桥杯 单片机设计与开发项目 省赛1 第二部分 程序设计试题(85 分) (大学组) 一 基本要求 1、使用大赛组委会统一提供的四梯单片机竞赛实训平台,完成本试题程序…

JavaScript智能对话机器人——企业知识库自动化

引言 内部知识管理常面临信息分散、查找困难的问题。本文将使用Node.js和虎跃办公的智能对话API,构建企业级知识问答机器人,支持自然语言查询和自动学习。 核心技术 自然语言处理(NLP)意图识别机器学习模型微调REST API集成 代…

元宇宙浪潮下,前端开发如何“乘风破浪”?

一、元宇宙对前端开发的新要求 元宇宙的兴起,为前端开发领域带来了全新的挑战与机遇。元宇宙作为一个高度集成、多维互动的虚拟世界,要求前端开发不仅具备传统网页开发的能力,还需要掌握虚拟现实(VR)、增强现实&#…

Spring Boot 3.4.3 基于 Caffeine 实现本地缓存

在现代企业级应用中,缓存是提升系统性能和响应速度的关键技术。通过减少数据库查询或复杂计算的频率,缓存可以显著优化用户体验。Spring Boot 3.4.3 提供了强大的缓存抽象支持,而 Caffeine 作为一款高性能的本地缓存库,因其优异的吞吐量和灵活的配置,成为许多开发者的首选…

QT Quick(C++)跨平台应用程序项目实战教程 6 — 弹出框

目录 1. Popup组件介绍 2. 使用 上一章内容完成了音乐播放器程序的基本界面框架设计。本小节完成一个简单的功能。单击该播放器顶部菜单栏的“关于”按钮,弹出该程序的相关版本信息。我们将使用Qt Quick的Popup组件来实现。 1. Popup组件介绍 Qt 中的 Popup 组件…

DuckDB系列教程:如何分析Parquet文件

Parquet 是一种强大的、基于列的存储格式,适用于实现更快捷和更高效的数据分析。您可以使用 DuckDB 这种内存型分析数据库来处理 Parquet 文件并运行查询以对其进行分析。 在这篇文章中,我们将逐步介绍如何使用 DuckDB 对存储在 Parquet 文件中的餐厅订单…