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

article/2025/7/26 22:28:50

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.hkcw.cn/article/ShagbpQZZw.shtml

相关文章

复数的指数形式:MATLAB演示

复数的指数形式&#xff1a;MATLAB演示 复数在工程和科学计算中无处不在&#xff0c;而指数形式&#xff08;又称极坐标形式&#xff09;是表示和处理复数的一种强大方式。本文将介绍复数的指数形式表示法&#xff0c;并展示如何使用MATLAB进行相关计算和可视化。 复数的基础…

FastAPI MCP 快速入门教程

目录 什么是 FastAPI MCP&#xff1f;项目设置1. 初始化项目2. 安装依赖3. 项目结构 编写代码创建主应用文件 运行和测试1. 启动服务器2. 使用 MCP Inspector 测试 什么是 FastAPI MCP&#xff1f; FastAPI MCP 是一个将 FastAPI 应用程序转换为 Model Context Protocol (MCP)…

俄罗斯代表团抵达土耳其 将参加俄乌谈判

当地时间6月1日,俄罗斯代表团抵达土耳其伊斯坦布尔,准备参加即将举行的俄乌谈判。俄谈判代表团团长梅金斯基在抵达后表示,所有与乌克兰谈判相关的评论都将于6月2日做出,并会在当天就俄罗斯在乌克兰问题上的立场发表详细声明。同一天,俄方代表团成员、俄国防部副部长福明也…

官员不作为岂能成为卖货噱头 消解严肃叙事引争议

5月31日晚,曾在热播电视剧《人民的名义》中饰演“宇宙区长”孙连城一角的演员李威,在短视频平台开启直播带货,销售天文望远镜。近一周内,李威已进行了三场相关直播。然而,6月1日上午,他发布的直播预告视频疑似被隐藏或删除,商品橱窗里的天文望远镜也已清空。李威在《人民…

当地纪委监委介入同案相反判决事件 调查正在进行

5月31日,河南省信阳市平桥区纪委监委发布情况通报。近日,网上关于“律师称两天收到同案相反‘判决’”引起网民关注。经核实,该案件是平桥区人民法院审理的一起股权转让纠纷案件。目前,平桥区纪委监委已介入调查。责任编辑:zx0176

苏超南京队1比0赢无锡队 热度胜似中超

今晚在南京五台山体育馆举行的比赛,南京队1:0 无锡队。真没想到这段时间的“苏超联赛”热度胜似“中超联赛”......责任编辑:zx0001

俄媒:乌摧毁俄大量轰炸机纯属谎言 乌方说法遭驳斥

俄罗斯“与假新闻作战”网站发布文章称,通过分析乌克兰方面发布的视频可以确认,乌总统泽连斯基关于“已摧毁34%俄罗斯远程机队”的说法并不属实。俄方认为,乌克兰实际上可能仅摧毁了两架图-95战略轰炸机及一架安-12运输机,其余受损飞机在维修后均可恢复作战能力。乌克兰国家…

Python数学可视化——坐标系与变换

Python数学可视化——坐标系与变换 直角坐标与极坐标转换及几何变换 本节将实现坐标系变换可视化工具&#xff0c;包括直角坐标系与极坐标系的相互转换&#xff0c;以及几何变换&#xff08;平移、旋转、缩放&#xff09;的数学原理展示。最后通过行星轨道案例演示极坐标的实际…

樊振东留洋细节:10天前主动联系俱乐部 新挑战与期待

德甲联赛萨尔布吕肯乒乓球甲级俱乐部宣布,奥运冠军樊振东加盟。在俱乐部的官方声明中,樊振东表示他非常期待在萨尔布吕肯和德甲的新挑战,体验新的环境,并与球队一起赢得更多的胜利。新赛季,樊振东将代表俱乐部征战乒乓球德甲联赛。球队经理表示这一切来得如此令人惊讶且迅…

端午节广州一景区发现7个莲花奇观 罕见奇观引游客驻足

5月31日,广州莲花山旅游区出现了多株莲花奇观。端午节假期首日,景区发现了7朵奇特的莲花,其中包括三株并蒂莲、两株双色莲、一株同心莲和一株三心莲,吸引了众多游客驻足拍照。广州莲花山曾多次出现双色、多蒂、多心等罕见的莲花奇观。每年6月下旬至8月是景区的莲花节,也是…

中国女排世联赛名单公布朱婷袁心玥落选 全网炸锅引发热议

2025年中国女排世联赛名单公布后,引起了广泛关注。朱婷和袁心玥两位世界级球星意外落选,取而代之的是一批年轻队员和二线老将。球迷们对此感到困惑:29岁的袁心玥正处于副攻黄金年龄,留洋期间技术还在不断进步;朱婷虽然年过三十,但在土耳其联赛依然稳坐主攻手位置。球迷质…

北大男孩谈如何把时间花在刀刃上 高考冲刺实用攻略

随着高考日益临近,考前10天是知识巩固和心态调整的关键时期。考生应实现复习策略的三个转变,在心态上完成软着陆;家长则需做好后勤保障与心理疏导工作,帮助孩子平稳应考。作为南城巴川学校的一线教师,结合多年的教育实践,分享一些备考经验。例如,语文要逐字抠《赤壁赋》…

计算机网络技术

目录 一、交换机配置 1、以太网MAC地址&#xff08;交换机设备工作在TCLP的数据链路层&#xff09; 2、Ethernet II帧格式 3、交换机工作原理 4、交换机以太网接口的工作模式 4.1、交换机以太网接口双工模式 4.2、交换机以太网接口速率 5、Cisco交换机的命令行 二、路由器配置 …

Java补充(Java8新特性)(和IO都很重要)

一、Lambda表达式 1.1、为什么使用Lambda表达式 Lambda表达式起步案例 下面源码注释是传统写法&#xff0c;代码是简写表达式写法 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.function.Consumer;/* * 学什么…

如何用docker部署ELK?

环境&#xff1a; ELK 8.8.0 Ubuntu20.04 问题描述&#xff1a; 如何用docker部署ELK&#xff1f; 解决方案&#xff1a; 一、环境准备 &#xff08;一&#xff09;主机设置 安装 Docker Engine &#xff1a;版本需为 18.06.0 或更新。可通过命令 docker --version 检查…

【免杀】C2免杀技术(十三)Inline Hook 概念篇

Hook 技术 Hook 技术是操作系统、软件开发和安全攻防中非常核心的技术手段之一。它的本质是“截获函数调用并插入自定义逻辑”。你可以把它理解为“在别人执行某个功能之前或之后偷偷插一脚”。 一、Hook 技术本质 Hook 挂钩技术&#xff0c;指的是&#xff1a; 修改程序运…

PCIe—TS1/TS2 之Polling.Active(一)

前文 训练序列有序集用于比特对齐、符号对齐以及交换物理层参数。2.5GT/s和5GT/s速率时&#xff0c;训练序列有序集不会加扰&#xff0c;只用8b/10b 编码。但到8GT/s及以上速率时&#xff0c;采用128b/130b编码&#xff0c;符号有可能加扰有可能不加扰&#xff0c;具体…

郑钦文说是一颗宝石就该闪烁 为梦想闪耀

郑钦文首次晋级法网八强后,在社交媒体上分享了她的感言:“人都应该有梦,有梦就别怕痛,是一颗宝石就该闪烁。”接下来的1/4决赛中,她将与萨巴伦卡交锋,这将是两人在法网的首次对决。期待郑钦文的表现,为她加油!责任编辑:zx0176

“苏超”凭啥火出圈 足球热浪席卷江苏

江苏省城市足球联赛,被网友们亲切地称为“苏超”,迅速走红。宿迁与徐州的对决吸引了大量关注,网友对“散装江苏”、“十三太保”的梗乐此不疲。话题热度甚至超过了同日举办的欧冠决赛。中国足球似乎看到了希望。“苏超”第三轮,徐州将比赛场地换到了当地最大的奥体中心,现…

负债等于2.6个恒大!中国第一大企业,员工人数超200万 铁路背后的巨额负债

在公共交通出行领域,铁路的客运量远超航空和水路。五一小长假期间,14.65亿人次的出行中,有超过1亿人次选择铁路出行。这背后的服务企业是中国员工规模最大的企业之一,其负债额相当于2.6个恒大。交通运输部数据显示,今年五一假期(5月1日至5日),全社会跨区域人员流动量为…