PyQt5实战——多脚本集合包,UI以及工程布局(二)

个人博客:苏三有春的博客

系列往期:
PyQt5实战——多脚本集合包,前言与环境配置(一)

布局

2.1 UI页面布局

整体框架分为分为三个部分,垂直分布。

  • 第一个部分为功能选择按钮(如UTF-8转换,翻译器等)

  • 第二部分为功能区,即对应功能输入,输出展示区

  • 第三部分为后台区,显示对应的后台信息(本质上是将终端输出的print重定向至这块区域,方便调试以及使用)

除此之外,整体的下方状态信息栏中有版本信息

整体布局如下图所示:

请添加图片描述

tips:

这个界面是直接在vscode中运行时所展示的,因此图标以及部分按钮并未完全列装(不保证debug与打包一致的原因较为复杂,与pyinstaller的版本有关,后续内容会解释),图标列装后如下所示:

请添加图片描述

2.2 工程布局

在创作自己的程序前(如果是较大的程序),最好需要规划一下自己的工程结构,用多个不同的目录保存不同的资源,如图像,文本,代码等,而代码中,实现不同功能的subprograms(子程序)也可以再细分在不同的目录中,尤其是可以多个subprogram(子程序)反复调用的subprograms(子程序)或scripts(脚本)。

我的工程布局意识也是在这个项目中不断完善的,还有一些不足和错误的地方也在不断更新中。

一级目录

请添加图片描述

  • MyScriptTools目录是包目录,为了方便管理我们需要用到的各种包文件,需要在项目开始时便创建好该项目python运行的虚拟环境(虚拟环境具体的创建流程看前文)。创建完成后,使用pip包管理器下载的所有包都会保存在这个包目录中。(因为我的虚拟环境名字叫MyScriptTools,因此包目录的名字也叫MyScriptTools)
  • src是存放代码的位置,所有的代码都存放在这个目录下
  • workspaces目录是运行时创建的保存文件目录,因为我的项目中,有一些功能或脚本会产生新的文件,我希望它们被保存在一个统一的空间,看起来不会太过混乱,因此专门设计了这一个功能:在程序运行时,创建一个workspaces目录,以后若产生新的文件,统一保存在workspaces目录下
  • BingTranslator.py与test.py是两个测试脚本,目前已经失去了作用

src目录

请添加图片描述

  • Classes:该目录下存放着各种功能的功能区UI类,error类等,如TranslatorClass.py为翻译功能的UI设计,包括按钮,文本框的布局等
  • component:该目录下存放着修改组件样式的方法,如editStyle.py文件中存放着修改QLineEdit样式的方法以及修改QTextEdit样式的方法。这样如果有多个QLineEdit组件需要修改样式时,只需要调用其中的方法即可。
  • dist:该目录是使用pyinstaller将程序打包成exe可执行文件时生成的,exe可执行文件存放在其中
  • res:该目录下存放着需要使用的图片,图标等资源文件
  • tools:该目录下存放着脚本以及功能的实现,如:实现翻译的功能方法存放在tools目录下的translation.py文件中,Classes目录下的TranslatorClass.py文件中会调用translation.py文件来实现功能
  • xxx.spec:该文件是如果打包时使用了–onefile参数,即打包生成一个单独的exe文件,则会产生该文件,该文件记录了一些打包时需要关注的信息
  • icon.ico:图标文件,可要可不要,如果不要,在打包时想要生成exe文件的图标时需要指定图标的路径,我懒得指定路径,只想填个名字,就把图标放在与main.py同一目录下
  • main.py:该文件时程序的入口,与C程序的main相同。打包时需要指定程序入口,即该文件
  • PrimeWindow.py:主UI框架,即主窗口,上面Classes中的UI仅为功能区UI,属于主窗口的三部分之一

2.3 布局思想

我的布局思想是在不断碰壁的过程中自己摸索出来的,在开发这个程序之初并没有想把它做成一个完整的具有UI界面的功能集合包,因此一开始并没有工程布局的概念,需要做什么便在src下新建一个文件开始编码,这种习惯的弊端在随着程序愈发庞大而变得愈发清晰,使程序越来越难管理且开发难度增大。之后抽时间将程序整理了一遍,便形成了这种布局。个人观念,仅供参考。

我的工程布局思想主要遵循两个原则:

归类

相同属性或相同功能或本质相同的文件放在一个目录下,如:图片,文本等文件属于输入文件,只可被调用,因此放在同一目录res下,当然,res下可再做区分,img,icon,txt等。不同的功能区UI可放在同一目录下,这样可以将primeWindow与功能UI区分开来,且方便primeWindow调用功能UI,来实现功能的切换。功能的实现放在tools目录下,classes可以调用tools下相应的功能。tools目录下,部分功能过于复杂无法用一个文件完成也可以再建立子目录。

重复调用

如果遇到需要反复调用的功能,可集成出来单独形成一个方法单独存放,方便不同文件的调用,而不需要重复实现,如文本框,单行文本框,按钮等样式,实现选择文件等功能

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

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

相关文章

Linux驱动开发(3):字符设备驱动

上一章节我们了解到什么是内核模块,模块的加载卸载详细过程以及内核模块的使用等内容。 本章,我们将学习驱动相关的概念,理解字符设备驱动程序的基本框架,并从源码上分析字符设备驱动实现和管理。 主要内容有如下五点:…

中国逐年最大NDVI数据集(250m)

最大NDVI数据集是指通过遥感技术获取的归一化植被指数(NDVI)数据,这些数据反映了地表植被覆盖的密集程度。NDVI的数值范围通常为-1到1,其中-1表示完全被水覆盖,0表示有岩石或裸土等非植被覆盖,而1表示植被完…

【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法

【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法 【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法 文章目录 【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和…

《西部皮革》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问:《西部皮革》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《西部皮革》级别? 答:省级。主管单位:四川省经济和信息化厅 …

供应SW1108P集成氮化镓直驱的高频准谐振IC

1. 概述 SW1108P 是一款针对离线式反激变换器的高性能高集成度准谐振电流模式 PWM 控制器。 SW1108P 内置 6V 的驱动电压,可直接用于驱动氮化镓功率管;芯片工作于带谷底锁定功能 的谷底开启模式,同时集成频率抖动功能以优化 EMI 性能&…

HTML 基础标签——表格标签<table>

文章目录 1. `<table>` 标签:定义表格2. `<tr>` 标签:定义表格行3. `<th>` 标签:定义表头单元格4. `<td>` 标签:定义表格单元格5. `<caption>` 标签:为表格添加标题6. `<thead>` 标签:定义表格头部7. `<tbody>` 标签:定义表格…

使用Nginx作为反向代理和负载均衡器

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Nginx作为反向代理和负载均衡器 引言 Nginx 简介 安装 Nginx Ubuntu CentOS 配置 Nginx 作为反向代理 配置 Nginx 作为负载…

「实战应用」使用 DHTMLX 构建数据透视表,促进有效的数据分析

概述&#xff1a;在本文中&#xff0c;您将了解组织何时选择数据透视表来处理大数据&#xff0c;并熟悉用于在网页上实现此功能的 DHTMLX 工具。 如今&#xff0c;高效处理大数据已成为企业的必需。企业每天必须处理大量数据&#xff0c;以将其转化为可操作的见解并获得竞争优…

Stable diffusion 3.5本地运行环境配置记录

1.环境配置 创建虚环境 conda create -n sd3.5 python3.10Pytorch(>2.0) conda install pytorch2.2.2 torchvision0.17.2 torchaudio2.2.2 pytorch-cuda12.1 -c pytorch -c nvidiaJupyter能使用Anaconda虚环境 conda install ipykernel python -m ipykernel install --user …

openGauss数据库-头歌实验1-4 数据库及表的创建

一、创建数据库 &#xff08;一&#xff09;任务描述 本关任务&#xff1a;创建指定数据库。 &#xff08;二&#xff09;相关知识 数据库其实就是可以存放大量数据的仓库&#xff0c;学习数据库我们就从创建一个数据库开始吧。 为了完成本关任务&#xff0c;你需要掌握&a…

图解TCP三次握手:一步步构建网络会话

在互联网通信中&#xff0c;确保数据传输的可靠性至关重要。TCP三次握手的过程正是为了解决这一问题而设计的。在建立连接之前&#xff0c;客户端和服务器需要确认彼此的存在与准备状态&#xff0c;以防止因网络延迟或数据丢失而导致的错误。通过三次握手&#xff0c;双方不仅能…

[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-linux)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

讲讲RabbitMQ 性能优化

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ 性能优化&#xff1f;】面试题。希望对大家有帮助&#xff1b; 讲讲RabbitMQ 性能优化 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ 是一个强大的消息代理&#xff0c;广泛用于分布式系统中&#x…

2-139 基于matlab的弹道轨迹仿真

基于matlab的弹道轨迹仿真。设计GUI图形用户界面&#xff0c;对导弹参数根据需求进行设置&#xff0c;直观的实现更改攻角、各级火箭喷射时间等参数后得到对应参数下的导弹弹道图像以及导弹的飞行时间和飞行距离。得到飞行时间集导弹射程。程序已调通&#xff0c;可直接运行。 …

【spark的集群模式搭建】Standalone集群模式的搭建(简单明了的安装教程)

文章目录 1、使用Anaconda部署Python2、上传、解压、重命名3、创建软连接4、配置spark环境变量5、修改 spark-env.sh配置文件6、启动hdfs&#xff0c;创建文件夹7、修改spark-defaults.conf配置文件8、修改workers配置文件9、修改log4j.properties配置文件&#xff08;可选&…

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

校门外的树(算法:标记法)

思路实现&#xff1a; 1.利用二维数组来存储输入数据 2.开辟一个包含所有范围的数组用来做标记初始为0 3.遍历二维数组&#xff0c;取到每段区间的开始位置和结束位置&#xff0c;在标记数字组中将边界点及边界点内置1 4.遍历标记数组记录0的个数&#xff0c;即可 代码实现…

100M宽带测速只有20M

100M宽带测速只有20M的原因主要有以下几点‌&#xff1a; ‌网络设备不匹配‌&#xff1a;100兆宽带的实际使用需要全千兆路由器、超五类网线以及千兆网卡的支持。如果使用老旧的路由器、五类网线或百兆网卡&#xff0c;可能会导致网速受限。例如&#xff0c;使用普通网线可能…

二、基础语法

入门了解 注释 **作用&#xff1a;**在代码中加一些注释和说明&#xff0c;方便自己或者其他程序员阅读代码 两种格式&#xff1a; 单行注释&#xff1a;// 描述信息 通常放在一行代码的上方&#xff0c;或者一条语句的末尾&#xff0c;对该行代码进行说明 多行注释&#x…

minikube 的 Kubernetes 入门教程--(五)

本文记录 Minikube 在 Kubernetes 上安装 WordPress 和 MySQL。 这两个应用都使用 PersistentVolumes 和 PersistentVolumeClaims 保存数据。 在深入这些步骤之前&#xff0c;先分享来自kubernetes.io教程。 链接>>使用持久卷部署 WordPress 和 MySQL | Kubernetes 获…