PyQt5入门
Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg。其中PyQt是Qt(c++语言实现的)为Python专门提供的扩展
PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.。而在Python中则使用PyQt这一工具包(PyQt5、PyQt5-tools、PyQt5-stubs),它是Python编程语言和Qt库的成功融合。
一、PyQt安装
pip install PyQt5 安装PyQt5。
pip install PyQt5-tools 安装Qt工具软件。
pip install PyQt5-stubs 安装PyQt5语法检测包(可选)。
安装完成之后可以在Python的安装目录/Lib/site-packages中找到PyQt5目录。
示例:
main.py文件
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayoutclass MyApp(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 创建一个垂直布局layout = QVBoxLayout()# 创建一个标签,并设置文本内容label = QLabel("Hello, World!")# 将标签添加到布局中layout.addWidget(label)# 设置窗口的布局self.setLayout(layout)# 设置窗口的大小self.setGeometry(300, 300, 300, 150)# 设置窗口的标题self.setWindowTitle('Hello World')# 显示窗口self.show()# 创建应用程序对象
app = QApplication(sys.argv)# 创建实例
ex = MyApp()# 进入应用程序的主循环,等待事件处理
sys.exit(app.exec_())
执行命令:python main.py
运行过程中,如果出现下列错误。
1、ModuleNotFoundError: No module named 'PyQt5'
说明没有PyQt5安装或安装成功,解决方法:安装PyQt5
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
2、ImportError: DLL load failed while importing QtWidgets: 找不到指定的程序。
先卸载PyQt5,再安装PyQt5。
pip uninstall PyQt5
pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple

二、安装PyQt Integration插件。
1、Qt Designer、PyUIC、PyRcc
安装PyQt Integration插件(Qt Designer、PyUIC、PyRcc),可以帮我们自动生成UI相关代码和资源。
Qt Designer:可以通过Qt Designer来编写UI界面,Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages\pyqt5-tools”下。
PyUIC:Qt Designer生成的.ui文件(实质上是XML格式的文件)可以通过pyuic5工具或python转换成.py文件。
命令格式:
pyuic5 -o destination.py source.ui
或者
python.exe -m PyQt5.uic.pyuic source.ui -o destination.py
PyRcc:在使用PyQt开发界面时,在Qt Designer中使用的图片等资源需要将其编译为py文件,这时需要用到PyRcc工具方便地将qrc文件转换为py文件。
资源文件编写说明
3.1新建resource.qrc(也可以通过Qt Designer生成qrc文件),代码如下:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file alias="contacts.png">ico/contacts.png</file>
<file alias="exit.png">ico/exit.png</file>
<file alias="about.png">ico/about.png</file>
<file alias="config.png">ico/config.png</file>
<file alias="help.png">ico/help.png</file>
</qresource>
</RCC>
3.2命令格式:
pyrcc5 -o resource.py resource.qrc
2、在PyCharm中配置Qt Designer、PyUIC、PyRcc
1、点击菜单栏“File”,弹出下拉框,选择“Setting”,弹出设置界面。在设置界面中选择“Tools”→“External Tools”,操作如下图所示。


2、外部工具配置。
名称:QtDesigner
工具设置
程序:E:\Anaconda\anaconda3\Library\bin\designer.exe
工作目录:$FileDir$
名称:PyUIC
工具设置
程序:E:\Anaconda\anaconda3\envs\pytorch\python.exe
实参:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
工作目录:$FileDir$
或者
程序:D:\anaconda3\Scripts\pyuic5.exe
实参:$FileName$ -o $FileNameWithoutExtension$.py
工作目录:$FileDir$
名称:PyRcc
工具设置
程序:D:\anaconda3\Scripts\pyrcc5.exe
实参:$FileName$ -o $FileNameWithoutExtension$_rc.py
工作目录:$FileDir$
三、PyQt5使用
1、首先打开或新建一个Python项目,点击菜单栏中的“Tools”,选择“External Tools”,可以看到之前设置好的三个工具,选择“Qt Designer”打开Qt设计工具,步骤如下图所示:

2、打开软件后,在弹出的引导界面选择“Main Window”,然后点击“创建”按钮,创建一个窗体界面,如下图所示:
3、创建简单界面。

最终完成后的界面如下图所示,点击“保存”保存为ui文件并置于项目目录下,比如:untitled9.ui。
4、右键点击ui文件(比如:untitled9.ui),选择“External Tool”,再选择PyUIC,将ui文件转换成py文件。
5、右键点击qrc文件(比如:my.qrc),选择“External Tool”,再选择PyRcc,将qrc文件转换成py文件。

6、编辑ui文件。
6.1)右键点击ui文件(比如:untitled9.ui),选择“External Tool”,再选择QtDesigner,弹出Qt Designer界面。

6.2)在Qt Designer界面,点击“打开”按键。

6.3)弹出对话框,选择ui文件(比如:untitled9.ui),打开。

6.4)打开文件后,就可以编辑ui文件。

7、新建一个python文件(比如:run_untitled.py),测试刚才的ui生成的py文件。
import sys
import untitled9from PyQt5.QtWidgets import QApplication, QMainWindowif __name__ == '__main__':# 实例化,传参app = QApplication(sys.argv)# 创建对象mainWindow = QMainWindow()# 创建ui,引用untitled文件中的Ui_MainWindow类ui = untitled9.Ui_MainWindow()# 调用Ui_MainWindow类的setupUi,创建初始组件ui.setupUi(mainWindow)# 创建窗口mainWindow.show()# 进入程序的主循环,并通过exit函数确保主循环安全结束(该释放资源的一定要释放)sys.exit(app.exec_())
8、运行run_untitled.py

8、使用pyinsaller生成exe文件。
8.1 cmd窗口下,进入工程目录下。
8.2 执行pyinstaller命令,生成exe文件
pyinstaller --onedir --noconsole run_untitled.py --name test
8.3在dist\test目录下,执行test.exe文件。


相关文章:
PyQt5入门
Python中经常使用的GUI控件集有PyQt、Tkinter、wxPython、Kivy、PyGUI和Libavg。其中PyQt是Qt(c语言实现的)为Python专门提供的扩展 PyQt是一套Python的GUI开发框架,即图形用户界面开发框架.。而在Python中则使用PyQt这一工具包(PyQt5、PyQt5-tools、PyQt5-stubs&am…...
算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】
前言 调整一下做题顺序,多个章节同步进行,穿插练习。可以在各章节的专栏中找同一类。 记录 六十九【动态规划基础】。 一、动态规划理论基础学习 参考学习链接 二、509. 斐波那契数 2.1 题目阅读 斐波那契数 (通常用 F(n) 表示&#x…...
如何利用Python进行数据分析
在当今这个大数据时代,数据分析已经成为了各行各业都非常重视的技能。而Python作为一门强大且易学的编程语言,成为了数据分析领域的主流工具之一。那么,如何利用Python进行数据分析呢? 一、安装Python及数据分析库 首先…...
如何判断机器学习模型的好坏之LIME和SHAP
LIME(Local Interpretable Model-agnostic Explanations)和SHAP(SHapley Additive exPlanations)是两种广泛使用的模型可解释性技术,旨在帮助理解复杂机器学习模型的决策过程。 LIME LIME (Local Interpretable Model-agnostic Explanations) 是一种技术,用于解释任何机…...
Android 是如何进行内存管理的
目录 1. 垃圾回收 (Garbage Collection)2. 内存分配3. 内存泄漏检测4. 内存优化5. 内存抖动 (Memory Churn)6. 内存警告 (Memory Warning)7. 内存分页 (Memory Paging)8. 内存分段 (Memory Segmentation)9. 内存压缩 (Memory Compaction)10. 内存分区 (Memory Partitioning)11.…...
【CSDN平台BUG】markdown图片链接格式被手机端编辑器自动破坏(8.6 已修复)
文章目录 bug以及解决方法bug原理锐评后续 bug以及解决方法 现在是2024年8月,我打开csdn手机编辑器打算修改一下2023年12月的一篇文章,结果一进入编辑器,源码就变成了下面这个样子,我起初不以为意,就点击了发布&#…...
WPF学习(4)- VirtualizingStackPanel (虚拟化元素)+Canvas控件(绝对布局)
VirtualizingStackPanel虚拟化元素 VirtualizingStackPanel 类(虚拟化元素)和StackPanel 类在用法上几乎差不多。其作用是在水平或垂直的一行中排列并显示内容。它继承于一个叫VirtualizingPanel的抽象类,而这个VirtualizingPanel抽象类继承…...
SQL约束
目录 1.常见的SQL约束 1.1 添加主键约束 1.2 单独添加主键约束 1.3 删除主键约束 1.4 设置自动增长 2.添加非空约束 3.添加唯一约束 4.添加默认值约束 我们已知道,创建数据表语法: create table 表名(字段名1 数据类型(长度) [约束],字段名…...
lombok使用@slf4j 运行时提示找不到符号log(Missing POM for org.projectors:lombok:jar)
1.问题表现 原本是之前搭建好的工程,只是换了个开发环境重新启动就不行了。一直编译不通过! 可以看到IDEA其实是引入了依赖的 都没有出现红色波浪线 <mapstruct.version>1.5.5.Final</mapstruct.version> <lombok.version>1.18.30<…...
21. 合并两个有序链表(递归)
目录 一;题目: 二代码; 三:结果: 一;题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 二代码; /*** Definition for singly-linked list.* struct ListNode {* …...
学习vue3 三,组件基础,父子组件传值
组件基础 每一个.vue 文件都可以充当组件来使用 每一个组件都可以复用 父组件引入之后可以直接当标签使用 案例: App.vue <script setup lang"ts"> import BaseRefAndReactive from "./components/BaseRefAndReactive.vue";</sc…...
月木学途开发 2.项目架构
1.项目介绍 月木学途是一款it在线学习网站,项目采用前后端分离架构。前端开发主要使用vue.js,后端使用Spring Cloud Alibaba技术栈。项目包含学习网站的大部分功能,分为管理员端和用户端。管理员端有权限管理、课程管理、网站管理、求职模块管…...
FPGA开发——按键控制数码管的设计
一、概述 按键控制数码管是一种常见的电子显示技术,它结合了按键输入与数码管显示的功能。在这一设计中,用户通过按下不同的按键来发送指令,这些指令随后被处理并转换为数码管上显示的数字或字符。按键通常作为输入设备,通过电路…...
【AI学习】[2024北京智源大会]具身智能:具身智能关键技术研究:操纵、决策、导航
具身智能关键技术研究:操纵、决策、导航 董 豪 | 北京大学助理教授 依然是边看边做些记录 这张图的重点是在说,我们的大脑,也是不同的部分处理不同的功能。这里面有些功能,比如视觉、听觉理解等功能,LLM已经具备&…...
C语言实现UDP广播
UDP 广播发送方 1.创建套接字:使用socket()函数创建一个UDP套接字。 2.设置套接字选项:使用setsockopt()函数设置SO_BROADCAST选项以允许广播。 3.发送数据:使用sendto()函数将数据发送到特定的广播地址和端口。 #include <stdio.h> …...
速记Java八股文——Redis 篇
前言 分类汇总 50 常见的 Redis 篇 经典后端面试题,并对题目进行了精炼总结,旨在帮助大家高效记忆,在面试中游刃有余,不至于陷入词穷的窘境。 Redis 篇 什么是Redis? Redis是一个开源的内存数据结构存储系统,可用作数…...
CUDA编程05 - GPU内存架构和数据局部性
一:概述 到目前为止,我们已经学会了如何编写 CUDA 核函数,以及如何设置和分配大量线程来执行核函数。我们还了解了当前 GPU 硬件的计算架构,以及线程在硬件上调度执行过程。在本章中,我们将重点关注 GPU 的片上(on-chi…...
TCP协议程序设计
文章目录 前言一、TCP协议程序是什么?二、使用步骤 1.服务器端与客户端2.实操展示总结 前言 TCP网络程序设计是指利用Socket类编写通信程序。利用TCP协议进行通讯的两个应用程序是有主次之分的,一个称为服务器程序,另一个称为客户机程序&…...
【C++高阶】:自定义删除器的全面探索
✨ 我凌于山壑万里,一生自由随风起 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 👂&am…...
Java中的不可变集合、Stream流以及异常处理的
目录 1. 不可变集合 如何创建不可变集合 2. Stream流 Stream基本操作 3. 异常处理 异常的分类 异常处理机制 1. 不可变集合 在Java中,不可变集合指的是一旦创建后内容不可更改的集合。这种集合的好处在于它们可以安全地被多个线程访问而无需同步,…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
