【PyQt5】PyQt5初探 - 一个简单的例程

PyQt5初探 - 一个简单的例程

  • 引言
  • 一、安装配置
  • 二、使用
    • 2.1 PyQt5简单例程
    • 2.2 与c++ Qt深入对比
  • 三、相关教程

引言

PyQt5是一个比较流行的Python图形用户界面(GUI)库,它基于Qt库(一个跨平台的C++库,用于开发应用程序的图形界面)为Python开发者提供了一个强大的工具,用于创建专业的GUI应用程序,而无需深入了解底层的C++编程。

  • 其与Qt (c++)相比,主要的优缺点如下:
    PyQt5优点:较高的开发效率和易用性,语法相对简单,python有意思的第三方库很多,可直接拿来用
    PyQt5缺点:较低的运行效率,特别是进行打包封装成可执行文件,体积很难缩小,进一步降低了运行效率
    感觉也是python相比c++的优缺点…

一、安装配置

网上教程很多,可参考如下博文:

python pyqt5+vtk安装以及配置采坑记录:https://blog.csdn.net/qq_38204686/article/details/123445607
PyQt5实现多文件调用以及UI和逻辑分离:https://zhuanlan.zhihu.com/p/95082345

二、使用

在这里插入图片描述

  • 程序运行如上图所示,源码如下所示:

2.1 PyQt5简单例程

    1. 本例程代码结构如下所示,其中main.py存放主函数,也是程序入口;main.py会调用MainWindow.py,里面存放主窗体相关函数;MainWindow.py会调用ui_MainWindow.py,里面是主窗体的界面设计;而ui_MainWindow.py是由designer.exe设计的MainWindow.ui使用pyuic5.exe生成的。(类似QtCreator的界面和逻辑分离)
      在这里插入图片描述
    1. main.py,创建一个主窗体并显示
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from MainWindow import MainWindow
import sysif __name__ == '__main__':app = QApplication(sys.argv)mainWindow = MainWindow()mainWindow.show()sys.exit(app.exec_())
    1. MainWindow.py,界面初始化,设置主窗体标题为"Title"
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from ui_MainWindow import Ui_MainWindow
import osclass MainWindow(QMainWindow):ui = Nonedef __init__(self, parent=None):super(MainWindow, self).__init__(parent)# 0. 界面初始化self.ui = Ui_MainWindow()self.ui.setupUi(self)self.setWindowTitle("Title")
    1. ui_MainWindow.py,由MainWindow.ui生成的py文件,供其他py调用,其在Qt designer中的显示和内容如下:
      在这里插入图片描述
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"><class>MainWindow</class><widget class="QMainWindow" name="MainWindow"><property name="geometry"><rect><x>0</x><y>0</y><width>799</width><height>620</height></rect></property><property name="windowTitle"><string>MainWindow</string></property><widget class="QWidget" name="centralwidget"><layout class="QGridLayout" name="gridLayout_2"><item row="0" column="0"><widget class="QLabel" name="label"><property name="text"><string>我是个标题</string></property><property name="alignment"><set>Qt::AlignCenter</set></property></widget></item></layout></widget><widget class="QMenuBar" name="menubar"><property name="geometry"><rect><x>0</x><y>0</y><width>799</width><height>26</height></rect></property></widget><widget class="QStatusBar" name="statusbar"/></widget><resources/><connections/>
</ui>

2.2 与c++ Qt深入对比

本文python使用的PyQt仿照了c++ Qt的结构,但还是略有不同:

    1. 文件结构
      在这里插入图片描述
      两者类似,都有main作为程序入口,只不过python没有.h和.cpp之分,c++还多了pro文件配置编译参数。两者的.ui文件一致,python的需要转为.py文件被调用,而c++的会自动生成ui_mainwindow.h被.cpp文件调用,如下图所示 (Qt creator会自动生成,VS好像还需要配置),保持之前使用c++ Qt的习惯,我将python下.ui文件转成的.py文件之前也增加了ui_
      在这里插入图片描述
    1. ui_mainwindow.hui_MainWindow.py
      在这里插入图片描述在这里插入图片描述
      setupUI函数一致,都要传递一个QMainWindow,然后对其进行修改。c++ Qt调用时候默认是给.h添加一个界面私有变量,然后.cpp调用其setupUI函数,传入类本身 (this指针)进行界面绘制。python也是类似的用法,看到有一篇博客没有new 一个Ui_MainWindow,而是直接继承Ui_MainWindow,都能调用其setupUI函数。
      在这里插入图片描述
      了解其UI文件生成以及调用的逻辑,自己直接在.py文件里写代码亦可。相比c++会灵活一些,毕竟没有私有变量。

三、相关教程

The complete PyQt5 tutorial — Create GUI applications with Python: https://www.pythonguis.com/pyqt5-tutorial/
PyQt5文档: https://www.riverbankcomputing.com/static/Docs/PyQt5/index.html#

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

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

相关文章

图文详解Java并发面试题

文章目录 1、并发与并行2、线程安全3、线程、进程、协程4、线程间通信5、线程创建方式6、8G内存创建的线程数7、普通Java程序含有的线程8、start()、run()9、线程调度、6种状态、强制停止线程、上下文切换10、守护线程、用户线程11、 volatile 、synchronized12、sleep() 、 wa…

飞牛fnNAS存储空间模式详解

目录 一、NAS的存储空间 二、多硬盘对NAS速度的提升原理 三、多硬盘对数据安全的提升原理 四、多硬盘对容量的提升原理 五、磁盘阵列模式 六、飞牛NAS支持的存储模式 七、具体如何选择存储空间模式 在数字化时代,数据是个人和企业发展的核心资产,但面临硬盘损坏、病毒…

OpenCv高阶(二十)——dlib脸部轮廓绘制

文章目录 一、人脸面部轮廓绘制代码实现1、定义绘制直线段的函数2、定义绘制凸包轮廓的函数3、读取输入图像4、初始化dlib的人脸检测器5、使用检测器在图像中检测人脸&#xff08;参数0表示不进行图像缩放&#xff09;6、加载dlib的68点人脸关键点预测模型7、遍历检测到的每个人…

WEBSTORM前端 —— 第3章:移动 Web —— 第3节:移动适配

目录 一、移动Web基础 1.谷歌模拟器 2.屏幕分辨率 3.视口 4.二倍图 二、适配方案 三、rem 适配方案 四、less 1.less – 简介 2.less – 注释 3.less – 运算 4.less – 嵌套 5.less – 变量 6.less – 导入 7.less – 导出 8.less – 禁止导出 五…

Altium Disigner(16.1)学习-原理图绘制以及必要操作

一、下载软件 通过网盘分享的文件&#xff1a;Altium Designer 16.zip 链接: https://pan.baidu.com/s/1uBHeoJJ-iA2tXw3NRjCcdA?pwd7c3h 提取码: 7c3h 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v5的分享 二、建立工程 添加proje…

AI炼丹日志-25 - OpenAI 开源的编码助手 Codex 上手指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇&#xff1a; MyBatis 更新完毕目前开始更新 Spring&#xff0c;一起深入浅出&#xff01; 大数据篇 300&#xff1a; Hadoop&…

Redis:安装与常用命令

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Redis &#x1f525; 安装 Redis 使⽤apt安装 apt install redis -y⽀持远程连接 修改 /etc/redis/redis.conf 修改 bind 127.0.0.1 为 bind 0.0.0.0 修改 protected-mode yes 为 protected-mo…

02 APP 自动化-Appium 运行原理详解

环境搭建见 01 APP 自动化-环境搭建 文章目录 一、Appium及Appium自动化测试原理二、Appium 自动化配置项三、常见 ADB 命令四、第一个 app 自动化脚本 一、Appium及Appium自动化测试原理 Appium 跨平台、开源的 app 自动化测试框架&#xff0c;用来测试 app 应用程序&#x…

UDP/TCP协议全解

目录 一. UDP协议 1.UDP协议概念 2.UDP数据报格式 3.UDP协议差错控制 二. TCP协议 1.TCP协议概念 2.三次握手与四次挥手 3.TCP报文段格式&#xff08;重点&#xff09; 4.流量控制 5.拥塞控制 一. UDP协议 1.UDP协议概念 当应用层的进程1要向进程2传输报文&#xff…

AWS之数据分析

目录 数据分析产品对比 1. Amazon Athena 3. AWS Lake Formation 4. AWS Glue 5. Amazon OpenSearch Service 6. Amazon Kinesis Data Analytics 7. Amazon Redshift 8.Amazon Redshift Spectrum 搜索服务对比 核心功能与定位对比 适用场景 关键差异总结 注意事项 …

第13讲、Odoo 18 配置文件(odoo.conf)详细解读

1. 概述 Odoo 配置文件&#xff08;odoo.conf&#xff09;是管理 Odoo 服务器行为的核心工具&#xff0c;涵盖了网络、安全、数据库、性能等多方面的关键参数。本文档系统梳理 Odoo 18 配置文件的主要参数&#xff0c;结合实际应用场景&#xff0c;提供权威的配置建议与最佳实…

Python详细实现Dash仪表盘:从零构建数据可视化界面

目录 Python详细实现Dash仪表盘&#xff1a;从零构建数据可视化界面一、引言&#xff1a;为什么选择 Dash&#xff1f;二、Dash 的核心组成与工作流程三、项目目标使用数据&#xff1a; 四、数学模型与聚合公式五、仪表盘结构设计页面设计结构如下&#xff1a; 六、完整代码实现…

ubuntu磁盘挂载

在 Ubuntu 系统中&#xff0c;挂载额外的磁盘或分区是一项常见操作&#xff0c;无论是为了扩展存储空间还是组织数据。本文将详细介绍如何使用mount命令挂载文件系统&#xff0c;并处理可能遇到的问题。 1、挂载文件系统的基本步骤 1.1、 查找磁盘设备名称 首先需要确定要挂载…

[9-2] USART串口外设 江协科技学习笔记(9个知识点)

1 2 3 智能卡、IrDA和LIN是三种不同的通信技术&#xff0c;它们在电子和汽车领域中有着广泛的应用&#xff1a; • 智能卡&#xff08;Smart Card&#xff09;&#xff1a; • 是什么&#xff1a;智能卡是一种带有嵌入式微处理器和存储器的塑料卡片&#xff0c;可以存储和处理数…

【js逆向_AES】全国二手房指数数据爬取

目标&#xff1a;请求参数signcode&#xff0c;请求结果data。 网址&#xff1a;aHR0cDovL3d3dy5jY2hpbmRleC5jb20vSG9tZS9pbmRleA 查看载荷 查看响应数据 点击xhr&#xff0c;发现所有请求参数都是一个signCode&#xff0c;还是加密后的结果&#xff0c;对应结果中数据data也…

模块化设计,static和extern(面试题常见)

文章目录 一、函数的声明和定义1.1 单个文件1.2 多个文件1.3 static和extern1.3.1 static修饰局部变量1.3.2 static修饰全局变量1.3.3 static修饰函数 总结 一、函数的声明和定义 1.1 单个文件 一般我们在使用函数的时候&#xff0c;直接将函数写出来就使用了 题目:写一个函数…

PySide6 GUI 学习笔记——常用类及控件使用方法(地址类QUrl)

文章目录 地址类QUrl主要功能URL 格式介绍常见 scheme&#xff08;协议&#xff09;类型QUrl 类常用方法常用方法示例典型应用场景 地址类QUrl QUrl 是 PySide6.QtCore 模块中的一个类&#xff0c;用于处理和操作 URL&#xff08;统一资源定位符&#xff09;。它可以解析、构建…

GEE:获取研究区的DEM数据

最近有粉丝追更 GEE 系列,说上次看完 DEM 代码解析后,自己试着改了一版。今天咱们就来拆解他的优化版代码 ——基于 SRTM 数据获取研究区 DEM 并导出,顺便聊聊怎么把 GEE 代码写得更专业! 先下结论:代码逻辑完整,3 处细节值得新手抄作业! 这版代码在数据加载→裁剪→可…

汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity):成本、效益与行业影响

汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity)&#xff1a;成本、效益与行业影响 到 2030 年&#xff0c;汽车行业将迎来一场安全技术的深度变革&#xff0c;其中 “三重安全防护”&#xff08;功能安全 FuSa、预期功能安全 SOTIF、网络安全&…

深入理解设计模式之状态模式

深入理解设计模式之&#xff1a;状态模式&#xff08;State Pattern&#xff09; 一、什么是状态模式&#xff1f; 状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式。它允许一个对象在其内部状态发生改变时&#xff0c;改变其行为&#xff08;即表现出不…