当前位置: 首页 > news >正文

PyQt学习笔记-获取Hash值的小工具

目录

  • 一、概述
    • 1.1 版本信息:
    • 1.2 基本信息:
      • 1.2.1 软件支持的内容:
      • 1.2.2 支持的编码格式
    • 1.3 软件界面图
  • 二、代码实现
    • 2.1 View
    • 2.2 Controller
    • 2.3 Model
  • 三、测试示例

一、概述

本工具居于hashlib+PyQt+QFileDialog写的小工具,主要是为了简单的获取相关文件或者一些数据的哈希值数据。

1.1 版本信息:

  • PyQt5 5.14.0
  • PyQt5-sip 12.12.2
  • pyqt5-tools 5.14.0.1.7
  • Python 3.8.6
  • 当前版本:V1.0.0.0

1.2 基本信息:

1.2.1 软件支持的内容:

  • 普通文本文件:.txt、.docs、.doc、.xml等
  • 图片文件:.png、.gif等
  • 压缩包文件:.zip等
  • 应用程序:.exe、.msi
  • 直接文本框输入文本
  • 其他的未进一步验证
    注: 打开文件时,数据的文本框中显示的是文件的完整路径,而非具体数据内容。

1.2.2 支持的编码格式

  • MD5
  • SHA1
  • SHA256

1.3 软件界面图

在这里插入图片描述

二、代码实现

2.1 View

# _*_ coding:utf-8 _*_from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QGridLayout
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QRadioButton
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIconclass MainWindow(QMainWindow):"Main Window"def __init__(self) -> None:"""Init"""super().__init__()self.init_ui()def init_ui(self):"""Init Ui"""self.setMinimumSize(400,300)self.resize(400,300)self.setWindowTitle("Hash Code V1.0.0.0")self.setWindowIcon(QIcon("res\Gear 2.ico"))self.central_widget = QWidget()""" main widget """self.setCentralWidget(self.central_widget)self.layout_main = QGridLayout()self.central_widget.setLayout(self.layout_main)# Hash type buttong.self.layout_hashtype = QHBoxLayout()self.layout_main.addLayout(self.layout_hashtype, 0, 0, Qt.AlignmentFlag.AlignTop)self.radio_md5 = QRadioButton("MD5")self.radio_md5.setChecked(True)self.layout_hashtype.addWidget(self.radio_md5)self.radio_sha1 = QRadioButton("SHA1")self.layout_hashtype.addWidget(self.radio_sha1)self.radio_sha256 = QRadioButton("SHA256")self.layout_hashtype.addWidget(self.radio_sha256)self.layout_hashtype.addStretch(1)self.btn_openfile = QPushButton("打开文件")self.layout_hashtype.addWidget(self.btn_openfile,alignment=Qt.AlignmentFlag.AlignRight)# Dataself.layout_main.addWidget(QLabel("数据:"), 1, 0, Qt.AlignmentFlag.AlignLeft)self.txt_data = QTextEdit()self.txt_data.setToolTip("""打开文件时则获取文件的Hash值,非文件时直接获取文本框中文本的Hash值!\r\n默认清除首尾空格!""")self.layout_main.addWidget(self.txt_data, 2, 0)self.txt_data.setMinimumHeight(50)# Hashself.layout_value = QHBoxLayout()self.layout_main.addLayout(self.layout_value, 3, 0)self.layout_value.addWidget(QLabel("Hash值:"))self.layout_value.addStretch(1)self.btn_clear = QPushButton("清除数据")self.layout_value.addWidget(self.btn_clear, alignment=Qt.AlignmentFlag.AlignRight)self.btn_calc = QPushButton("计算")self.layout_value.addWidget(self.btn_calc, alignment=Qt.AlignmentFlag.AlignRight)self.txt_value = QTextEdit()self.layout_main.addWidget(self.txt_value, 4, 0)

2.2 Controller

# _*_ coding:utf-8 _*_import os
import hashlib
from PyQt5.QtWidgets import QFileDialog
from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtWidgets import QTextEdit
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QGridLayout
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QRadioButtonfrom view.main_view import MainWindowclass MainWindowController(MainWindow):"""The controller of mainwindow"""def __init__(self) -> None:"""Init"""super().__init__()self.btn_openfile.clicked.connect(self.openfile)self.btn_clear.clicked.connect(self.clear)self.btn_calc.clicked.connect(self.gethash)self.show()def openfile(self):"""Open File"""# 打开文件filepath, filetypelist = QFileDialog.getOpenFileName()self.txt_data.setText(filepath)def gethash(self):"""Get Hash Value"""# 判断是否未文件,为文件时读取文件进行校验data = self.txt_data.toPlainText().strip()try:if os.path.exists(data):file = open(data, "rb")data_b = file.read()else:data_b = data.encode("utf-8")except Exception as err:self.txt_value.setText(err)# 计算哈希值,根据不同选项选择不同的算法。if self.radio_md5.isChecked():hash_value = hashlib.md5(data_b).hexdigest()elif self.radio_sha1.isChecked():hash_value = hashlib.sha1(data_b).hexdigest()elif self.radio_sha256.isChecked():hash_value = hashlib.sha256(data_b).hexdigest()else:return# 显示哈希值self.txt_value.setText(str(hash_value).upper())def clear(self):"""Get Hash Value"""self.txt_value.clear()self.txt_data.clear()

2.3 Model

小工具,没有model。

三、测试示例

在这里插入图片描述
在这里插入图片描述

相关文章:

PyQt学习笔记-获取Hash值的小工具

目录 一、概述1.1 版本信息:1.2 基本信息:1.2.1 软件支持的内容:1.2.2 支持的编码格式 1.3 软件界面图 二、代码实现2.1 View2.2 Controller2.3 Model 三、测试示例 一、概述 本工具居于hashlibPyQtQFileDialog写的小工具,主要是…...

【(数据结构)— 双向链表的实现】

(数据结构)— 双向链表的实现 一.双向链表的结构二. 双向链表的实现2.1 头文件 ——双向链表的创建及功能函数的定义2.2 源文件 ——双向链表的功能函数的实现2.3 源文件 ——双向链表功能的测试2.4 双向链表各项功能测试运行展示2.4.1 双向链表的初始化…...

酷克数据发布HD-SQL-LLaMA模型,开启数据分析“人人可及”新时代

随着行业数字化进入深水区,企业的关注点正在不断从“数字”价值转向“数智”价值。然而,传统数据分析的操作门槛与时间成本成为了掣肘数据价值释放的阻力。常规的数据分析流程复杂冗长,需要数据库管理员设计数据模型,数据工程师进…...

FL Studio21最新中文破解进阶高级完整版安装下载教程

目前水果软件最版本是FL Studio21,它让你的计算机就像是全功能的录音室,大混音盘,非常先进的制作工具,让你的音乐突破想象力的限制。喜欢音乐制作的小伙伴千万不要错过这个功能强大,安装便捷的音乐软件哦!如…...

MDN--Web性能

CSS 动画与 JavaScript 动画 动画的实现可以有很多种方式,比如 CSS transition 和 animation 或者基于 JavaScript 的动画(使用 requestAnimationFrame()) CSS 过渡和动画 CSS transiton :创建当前样式与结束状态样式之间的动画。尽管一个元素处于过渡状态中&…...

Vue3.js:自定义组件 v-model

Vue3的自定义v-model和vue2稍有不同 文档 https://cn.vuejs.org/guide/components/v-model.html 目录 原生组件自定义组件CustomInput实现代码1CustomInput实现代码2 v-model 的参数 原生组件 <input v-model"searchText" />等价于 <input:value"s…...

AI虚拟主播开发实战(附源码)

人工智能 文章目录 人工智能前言 前言 https://blog.csdn.net/icemanyandy/article/details/124035967...

innoDB如何解决幻读

Mysql的事务隔离级别 Mysql 有四种事务隔离级别&#xff0c;这四种隔离级别代表当存在多个事务并发冲突时&#xff0c;可能出现的脏读、不可重复读、幻读的问题。其中 InnoDB 在 RR 的隔离级别下&#xff0c;解决了幻读的问题 事务隔离级别脏读不可重复读幻读未提交读&#xff…...

Git - 导出(archive)、忽略(gitignore)、隐藏(Stash)、合并冲突(merge)的解决方法

概述 本次集中总结了Git4个常规操作&#xff0c;导出(archive)、忽略(gitignore)、隐藏(Stash)、合并冲突(merge)的解决方法&#xff0c;希望帮助到正在辛苦寻找的你。 .gitignore忽略文件 之前开发和部署服务比较仓促&#xff0c;所以有很多图片文件一起加载到服务中&#…...

【Javascript】‘var‘ is used instead of ‘let‘ or ‘const‘

解决&#xff1a; 设置完之后,var 就不会再出现黄色波浪线警告...

金融统计学方法:神经网络

目录 1.神经网络 2.深度神经网络 3.案例分析 1.神经网络 神经网络是模仿人脑神经元工作原理而设计的一种算法模型。在一个基本的神经网络中&#xff0c;存在多个“神经元”或称为“节点”&#xff0c;这些节点被组织成多个层次。每个节点都接收前一层的输入&#xff0c;进行…...

任何人不知道这款超实用的配音软件,我都会伤心的OK?

看完一段精彩的视频&#xff0c;令人陶醉的原因之一就是配音&#xff0c;有的充满感情&#xff0c;有的字正腔圆&#xff0c;相信很多人都不知道这样的声音是怎么配出来的&#xff1f;今天&#xff0c;小编就来给大家分享一款超实用的配音软件&#xff0c;不仅操作简单&#xf…...

Linux查看日志文件的常用命令

1、查看文件最后1000行内容 tail -n 1000 filename 2、实时查看文件最后1000行内容&#xff0c;动态刷新 tailf -n 1000 filename tail -f -n 1000 filename 3、按照关键字搜索日志 cat filename | grep 关键字 4、按照关键字搜索并包含前(后)多少行 【&#xff08;A前B后C前…...

AcWing算法分享系列——二分图

这是AcWing算法分享系列的第一篇文章,我们先从图论的知识下手(因为我觉得图论的只是好理解些)。 这次我们主要讲的就是二分图,二分图这次我们主要讲的就是最基础的两个板块: 二分图的判定(染色法)二分图的完美匹配(匈牙利算法)我们这一篇文章先从二分图的概念开始入手…...

【Excel单元格类型的解析校验】Java使用POI解析excel数据

一、使用的maven依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.7</version> </dependency> <dependency><groupId>org.apache.poi</groupId&…...

【运维知识高级篇】超详细的Jenkins教程5(pipeline流水线配置+分布式构建)

CI/CD是持续集成&#xff0c;持续部署&#xff0c;集成就是开发人员通过自动化编译&#xff0c;发布&#xff0c;测试的手段集成软件&#xff0c;在开发的测试环境上测试发现自己的错误&#xff1b;持续部署是自动化构建&#xff0c;部署&#xff0c;通常也是在测试环境上进行&…...

为什么要在电影院装监控?有什么作用?

近期小编在网上看到有很多人在讨论&#xff1a;电影院的摄像头有多高清&#xff1f;看电影时的小动作放映员都能看得一清二楚&#xff1f;答案是&#xff1a;是的。但大家也不必有心理负担&#xff0c;电影院的监控目的不是为了监控观众&#xff0c;更多的是为了保障观影者的权…...

攻防世界题目练习——Web引导模式(三)(持续更新)

题目目录 1. mfw2. Cat3.4.5. 1. mfw 进去看到网页和页面内容如下&#xff1a; 看到url的参数 ?pageabout &#xff0c;我以为是文件包含什么的&#xff0c;反复试了几次&#xff0c;想用 …/…/…/…/etc/passwd &#xff0c;但是发现.似乎被过滤了&#xff0c;实在不知道怎…...

Python制作PDF转Word工具(Tkinter+pdf2docx)

一、效果样式 二、核心点 1. 使用pdf2docx完成PDF转换Word 安装pdf2docx可能会报错&#xff0c;安装完成引入from pdf2docx import Converter运行也可能报错&#xff0c;可以根据报错提示看缺少那些库&#xff0c;先卸载pip uninstall xxx,使用pip install python-docx -i htt…...

有哪些手段可以优化 CSS, 提高性能

CSS优化是Web开发中提高性能和用户体验的关键部分。下面详细解释一些CSS优化的方法&#xff0c;以提高性能&#xff1a; 合并和压缩CSS文件: 合并文件&#xff1a;将多个CSS文件合并成一个&#xff0c;以减少HTTP请求次数。这可以通过构建工具&#xff08;如Webpack&#xff09…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...