python PyQt5的学习
一、安装与配置
1、环境:
python3.7+
2、相关模块
pip install pyqt5 pyqt5-tools pyqt5designer
可以加个镜像
-i https://pypi.tuna.tsinghua.edu.cn/simple
3、配置设计器
python的pyqt5提供了一个设计器,便于ui的设计
界面是这样的:
只需要在这个设计器中将控件移动到窗口中即可。
常用的控件有:
pushButton:点击按钮
listWidget:显示多行文字
graphicsWidget:显示图片
lineEdit:单行文字
label:标签
以下为具体配置过程:
(1)在pycharm中点击设置(settings):
(2)找到External Tools扩展工具
添加两个功能

Qt Designer :它的功能是打开设计器

program:选择:
working directory:功能是将设计器生成的ui文件转换成py文件
$ProjectFileDir$
Pyuic

program选择:![]()
working directory:
$ProjectFileDir$
完成以后:
注意:项目文件的路径中不要出现中文,否则会报错
二、设计ui的思路
我个人设计ui时偏好通过main.py启动主页面(ui.py)进入其他的功能页面
如:

框架为:
——main.py:启动代码
——ui.py(ui.ui使用Pyuic转换而来):主页面
——music.py ,data.py,crawl.py,text.py(相应的.ui文件转换而来):功能页面
——sheet(文件夹):存放美化设计的图片:
eg:

![]()
![]()
以及背景、字体等:


三、代码编写
由于ui.py和其他功能代码文件都可以通过设计器来设计并转换成py文件,所以只需要保证拖放美观即可,并没有难度,关键在于实现逻辑的主代码main.py部分
1、导入包
QtGui,QtCore,QtWidgets中含有pyqt5库中重要控件的函数引入等。
然后我分别从ui中引入了MainWindow的类

2、初始化
main.py中调用页面时需要重新初始化,每个都要
格式为:
class MainWindow1(QtWidgets.QMainWindow):def __init__(self, parent=None):super(MainWindow1, self).__init__(parent)self.ui = Ui_MainWindow1()self.ui.setupUi(self)


3、添加逻辑
在初始化后直接添加代码核心的逻辑
4、主函数启动
if __name__ == '__main__':app = QtWidgets.QApplication(sys.argv)mainwindow = MainWindow1()mainwindow.show()sys.exit(app.exec_())
四、几个常用功能
pyqt5的函数非常多,不可能全部用到,这里分享几个我在ui设计中常用到的几个
1、打开窗口
在初始化的后面加上
self.ui.pushButton1.clicked.connect(self.open_2)
然后在类中定义一个函数
def open_2(self):self.st2=MainWindow2(self)self.st2.show()
即当点击按钮时可打开另一个界面
注意!!!这里pushButton的命名要记清,这里是pushButton1

![]()
2、返回主界面
这里不能用打开主界面的方式来返回,因为主界面是其他功能界面的父界面
self.ui.pushButton2.clicked.connect(self.back) def back(self):self.close() # 关闭当前窗口self.parent().show() # 显示主窗口
3、选择文件夹
以选择图像文件为例,如有其他文件,只需在getOpenFileName中改文件后缀即可
self.ui.toolButton1.clicked.connect(self.bind_list)def bind_list(self):file_path, _ = QFileDialog.getOpenFileName(None, "选择图像", os.getcwd(), "图像文件 (*.png *.jpg *.bmp)")self.current_image_path = file_path # 保存选定的文件路径if file_path:self.show_image(file_path)
看下效果
点击
后:
4、美化
直接在初始化后添加:
可以增加窗口图标和按键图标
#可视化icon = QIcon('sheet/click.png')self.ui.pushButton1.setIcon(icon)self.ui.pushButton2.setIcon(icon)self.ui.pushButton3.setIcon(icon)# 设置窗口图标Qicon = QIcon('sheet/img2.png') # 替换为你的图标文件路径self.setWindowIcon(Qicon)
另外给大家分享一个ui设计中的图标网站ui设计图标,里面的资源很丰富,好看精简。
五、总结
其实python ui设计的难度并不高,要设计出一个简易的框架很容易,而pyqt5的实际最广泛的用途是与一些功能相结合,比如代码复现时通过点击按钮能够实现运行某个启动代码,在这个过程中需要用到的就是subprocess这个库,还有环境配置的很多问题,核心问题比如信号与槽的使用,我后续会在专栏中更新一些设计实例,大家可以订阅专栏内容来具体学习如何解决一些问题。
相关文章:
python PyQt5的学习
一、安装与配置 1、环境: python3.7 2、相关模块 pip install pyqt5 pyqt5-tools pyqt5designer 可以加个镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple3、配置设计器 python的pyqt5提供了一个设计器,便于ui的设计 界面是这样的:…...
3.goLand基础语法
目录 概述语法for常量与变量数组切片 slice切片问题问题1问题2 Make 和 New结构体和指针结构体标签 结束 概述 从 java 转来学 go ,在此记录,方便以后翻阅。 语法 for package mainimport "fmt"func main() {for i : 0; i < 3; i {fmt.…...
计算机硬件 5.2组装整机
第二节 组装整机 一、准备工作 1.常用工具:中号十字螺丝刀、尖嘴钳、软毛刷、防静电手环等。 2.组装原则: ①按“先小后大”“从里到外”的顺序进行,不遗漏每一环节,不“带病”进行下一环节。 ②合理使用工具器材,…...
Docker搭建MySQL主从数据库-亲测有效
1、测试环境概述 1、使用MySQL5.7.35版本 2、使用Centos7操作系统 3、使用Docker20版本 案例中描述了整个测试的详细过程 2、安装Docker 2.1、如果已经安装docker,可以先卸载 yum remove -y docker \ docker-client \ docker-client-latest \ docker-common \ docker-l…...
PyTorch 中的距离函数深度解析:掌握向量间的距离和相似度计算
目录 Pytorch中Distance functions详解 pairwise_distance 用途 用法 参数 数学理论公式 示例代码 cosine_similarity 用途 用法 参数 数学理论 示例代码 输出结果 pdist 用途 用法 参数 数学理论 示例代码 总结 Pytorch中Distance functions详解 pair…...
【Vue技巧】vue3中不支持.sync语法糖的解决方案
海鲸AI-ChatGPT4.0国内站点,支持设计稿转代码:https://www.atalk-ai.com 在 Vue 3 中,.sync 修饰符已经被移除。在 Vue 2 中,.sync 修饰符是一个语法糖,用于简化子组件和父组件之间的双向数据绑定。在 Vue 3 中&#x…...
设计模式⑦ :简单化
文章目录 一、前言二、Facade 模式1. 介绍2. 应用3. 总结 三、Mediator 模式1. 介绍2. 应用3. 总结 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所以会看看书,但是又记不住,所以决定开始写"抄书"系列。本系列大部分内容…...
Java:选择哪个Java IDE好?
Java:选择哪个Java IDE好? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&…...
unity打包apk后网络请求提示unknown error处理
近期同事的一个比较老的版本的unity项目在电脑上运行都正常,但是打包成android后安装到手机上就提示unknown error 让我帮他排查一下问题。由于是涉密项目不能发图就简单介绍下处理过程吧! 一、故障原因 请求的地址ssl证书过期了。 二、处理过程 更改请…...
力扣 | 11. 盛最多水的容器
双指针解法–对撞指针 暴力解法public int maxArea1(int[] height) {int n height.length;int ans 0;for (int i 0; i < n; i) {for (int j i 1; j < n; j) {int area Math.min(height[i], height[j]) * (j - i);ans Math.max(ans, area);}}return ans;}双指针解法…...
史上最全EasyExcel
一、EasyExcel介绍 1、数据导入:减轻录入工作量 2、数据导出:统计信息归档 3、数据传输:异构系统之间数据传输 二、EasyExcel特点 Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内…...
MySQL---事务的四大特性详解(高频面试题)
在MySQL中,事务具有以下四个基本特性: 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性通常被称为ACID特性。 一…...
为 OpenCV 编写文档(二)
常用命令 这里通过简短的示例描述了最常用的 doxygen 命令。有关可用命令的完整列表和详细说明,请访问命令参考。 基本命令 brief - 带有简要实体描述的段落 param - 函数参数的描述。 多个相邻语句合并到一个列表中。如果在实际函数签名中找不到具有此名称的参数…...
HUAWEI华为MateStation S台式机电脑12代PUC-H7621N,H5621N原装出厂Windows11.22H2系统
链接:https://pan.baidu.com/s/1QtjLyGTwMZgYiBO5bUVPYg?pwd8mx0 提取码:8mx0 原厂WIN11系统自带所有驱动、出厂主题壁纸、系统属性专属联机支持标志、Office办公软件、华为电脑管家等预装程序 文件格式:esd/wim/swm 安装方式…...
机器学习:holdout法(Python)
import pandas as pd import numpy as np from sklearn.preprocessing import LabelEncoder, StandardScaler # 类别标签编码,标准化处理 from sklearn.decomposition import PCA # 主成分分析 import matplotlib.pyplot as plt from sklearn.model_selection impor…...
【GaussDB数据库】序
参考链接1:国产数据库华为高斯数据库(GaussDB)功能与特点总结 参考链接2:GaussDB(DWS)介绍 GaussDB简介 官方网站:云数据库GaussDB GaussDB是华为自主创新研发的分布式关系型数据库。该产品支持分布式事务,…...
代码随想录算法训练营第三十八天|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
题目:理论基础 文章链接:代码随想录 视频链接:动态规划理论基础 动态规划五部曲: 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 题目:509. 斐…...
大数据开发之Hadoop(优化新特征)
第 1 章:HDFS-故障排除 注意:采用三台服务器即可,恢复到Yarn开始的服务器快照。 1.1 集群安全模块 1、安全模式:文件系统只接收读数据请求,而不接收删除、修改等变更请求 2、进入安全模式场景 1)NameNod…...
在使用go语言开发的时候,程序启动后如何获取程序pid
在Go语言中,标准库并没有直接提供获取进程ID(PID)的函数。通常,你可以使用os包和syscall包来调用底层的操作系统函数来获取PID。 以下是一个获取程序PID的示例代码: package mainimport ("fmt""os&qu…...
HFSS笔记/信号完整性分析(二)——软件仿真设置大全
文章目录 1、多核运算设置1.1 如何设置1.2 如何查看自己电脑的core呢?1.3 查看求解的频点 2、求解模式设置Driven Terminal vs Driven modal 3、Design settings4、自适应网格划分5、更改字体设置 仅做笔记整理与分享。 1、多核运算设置 多核运算只对扫频才有效果&…...
从STM32F103到GD32F303:如何用CubeMX和Keil5低成本‘平替’升级你的项目?
从STM32F103到GD32F303:低成本高性能迁移实战指南 在嵌入式开发领域,芯片选型往往需要在性能与成本之间寻找平衡点。对于已经熟悉STM32F103系列开发但面临成本压力或性能瓶颈的工程师来说,GD32F303系列提供了一个极具吸引力的替代方案。这款国…...
告别Python环境混乱!用virtualenv为每个项目创建独立开发空间(附常用命令速查表)
告别Python环境混乱!用virtualenv为每个项目创建独立开发空间(附常用命令速查表) 你是否经历过这样的场景:刚在项目A中完美运行的代码,迁移到项目B就报错;或是系统Python被意外升级导致所有项目崩溃&#x…...
【YOLOv5 v6.1】从零到一:手把手实战自定义数据集训练与部署避坑指南
1. 环境准备:从零搭建YOLOv5训练环境 第一次接触YOLOv5时,我最头疼的就是环境配置。这里分享一个经过多次验证的稳定方案,适用于大多数NVIDIA显卡设备。首先需要安装Anaconda,这是管理Python环境的利器。我习惯用Miniconda&#x…...
异步分布式k-mer计数算法DAKC解析与优化
1. 异步分布式k-mer计数算法解析 k-mer计数是基因组分析中的基础操作,它统计DNA序列中所有长度为k的子串出现频率。这项技术在基因组组装、宏基因组分析等场景中扮演着关键角色。传统方法在处理大规模数据时面临性能瓶颈,而分布式异步算法DAKC通过创新设…...
从Harness走向Coordination,openJiuwen社区发布JiuwenSwarm,引领多智能体协作新范式
刚刚,华为支持的开源 AI Agent 平台社区 openJiuwen 发布并开源了 JiuwenSwarm。 这是一个面向多智能体协作的蜂群智能体。让多个 AI 智能体像蜂群一样高效协作、自主演进,正式按下 "群体智能" 的加速键,开启 AI 时代的 "养蜂…...
来姨妈不舒适有没有补充营养的经期产品推荐?ULOV(最美是你)选购指南
# 来姨妈不舒适有没有补充营养的经期产品推荐?ULOV(最美是你)选购指南来姨妈不舒适有没有补充营养的经期产品推荐?这是14-40岁女性高频搜索的真实困惑。传统红糖水、热饮或普通果汁难以兼顾舒缓不适与科学补养,而市面多…...
DeepSeek LeetCode 2503.矩阵查询可获得的最大分数 Go实现
以下是 LeetCode 2503 的 Go 实现,使用优先队列 排序 离线查询的思路:go import ("container/heap""sort" )type Cell struct {val intr intc int }// 最小堆实现 type MinHeap []Cellfunc (h MinHeap) Len() int {…...
从蓝桥杯嵌入式真题到项目实战:如何把赛题代码改造成一个可配置的电压监控系统?
从竞赛到实战:构建可配置电压监控系统的嵌入式开发指南 参加过蓝桥杯嵌入式竞赛的同学,往往在赛后会有这样的困惑:那些为比赛而写的代码,真的能在实际项目中复用吗?答案当然是肯定的。本文将带你从第十届蓝桥杯嵌入式真…...
Claude code配置全流程(附带接入模型)
1.安装nodejs (Claudecode 本身是用TypeScript/JavaScript开发的命令行工具,需要通过Node.js运行时来执行,并且node.js天然集成npm,claudecode是作为npm包发布的): 1.1网址:https://node.org.cn/ 进入后下载自己需要的系统类型就可…...
从汽车到无人机:STM32F4的CAN总线实战,手把手教你搭建双节点通信(附代码)
STM32F4 CAN总线工业级应用实战:从无人机飞控到机器人通信 1. CAN总线技术在现代嵌入式系统中的核心价值 CAN总线(Controller Area Network)自1986年由博世公司开发以来,已成为工业控制领域的黄金标准。这项最初为汽车电子设计的通…...
