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

【嵌入式学习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 QIcon

class 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.dtcms.com/a/111975.html

相关文章:

  • Linux安装启动ssh服务器以及ssh的配置
  • Leetcode 15 -- 双指针
  • Mysql 中的 MyISAM 引擎
  • 第十五届蓝桥杯单片机省赛程序设计试题
  • CSS 3D变换,transform:translateZ()
  • 从小米汽车事故反思 LabVIEW 开发
  • 专业的情商测评工具:EQ-i在线测评系统
  • Fastjson 处理 JSON 生成与解析指南
  • 31--当认证协议开始“选秀“:RADIUS、LDAP、AD与本地认证的C位之争
  • react redux的学习,多个reducer
  • drawio导出流程图为白色背景png图片
  • 对OSPF协议的LSA分析
  • Linux系统进程
  • AI 浪潮下企业身份管理:特点凸显,安全挑战升级
  • CMake学习-- install 指令详细说明
  • 11.多线程-信号量-线程池
  • AWS 云运维管理指南
  • ekf-imu --- 四元数乘法符号 ⊗ 的含义
  • SQLite 触发器
  • 深入解析CPU主要参数:选购与性能评估指南
  • ngx_alloc
  • 【2022】【论文笔记】基于相变材料的光学激活的、用于THz光束操作的编码超表面——
  • leetcode-代码随想录-哈希表-有效的字母异位词
  • 2007-2019年各省地方财政交通运输支出数据
  • 动物多导生理信号采集分析系统技术简析
  • 分治算法的使用条件
  • 页面简单传参
  • 【Linux】条件变量封装类及环形队列的实现
  • mybatis慢sql无所遁形
  • 学透Spring Boot — 009. Spring Boot的四种 Http 客户端