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。

三、测试示例

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

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

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

相关文章

django建站过程(2)创建第一个应用程序页面

创建第一个应用程序页面 设置第一个页面【settings.py,urls.py,views.py】settings.pyurls.pyviews.py django是由一系列应用程序组成,协同工作,让项目成为一个整体。前面已创建了一个应用程序baseapp,使用的命令 python manage.py startapp baseapps这…

机器学习,神经网络中,自注意力跟卷积神经网络之间有什么样的差异或者关联?

如图 6.38a 所示,如果用自注意力来处理一张图像,假设红色框内的“1”是要考虑的像素,它会产生查询,其他像素产生 图 6.37 使用自注意力处理图像 键。在做内积的时候,考虑的不是一个小的范围,而是整张图像的…

发展新能源汽车加快充换电基础设施建设实施方案-安科瑞黄安南

摘要:为深入贯彻落实《国务院办公厅关于印发新能源汽车产业发展规划(2021—2035年)的通知》(国办发 ﹝2020﹞39号)、《国家发展改革委等部门关于进一步提升电动汽车充电基础设施服务保障能力的实施意见》(发…

【电子通识】USB接口三大类型图册

基本概念 不同时期的USB接口有不同的类型,USB接口分为插头和插座: 插头,plug,对应的也叫公口,即插别人的。 插座,receptacle,对应也叫做母口,即被插的。 USB的接口类型&#xff0…

VMware下linux中ping报错unknown host的解决办法

一、错误截图 二、解决办法 2.1 按照步骤查看本机虚拟IP 依次点击:【编辑】》【虚拟网络编辑器】,选中NET模式所属的行,就能看到子网地址。 比喻,我的子网地址是:192.168.18.0 那么,接下来要配置的linux…

根据pid查看jar包(windows)

打开jdk/bin/jvisualvm.exe,根据pid找到jar包的主启动类,jdk14以后不再默认使用,官网下载,也可以使用老版本的查看

如果Domino上的邮件无法直接发送到@outlook.com

大家好,才是真的好。 目前将Domino仅仅作为邮件服务器的企业用户还不少。如果Domino服务器版本比较新(例如版本为11.0.x、12.0.x等),外发邮件时,没有通过邮件网关中转邮件,而是直接发送到Internet互联网上…

未来数字化转型发展的前景如何,企业又该怎么实现?

商业世界有一个认识,互联网只用看中国和美国,其他国家已经被远远甩在了后边,移动互联网的出现更是将互联网的跨地域、跨国、互联等属性发挥到了极致,让众多互联网巨头开启了争夺世界各国市场的脚步。 移动互联网的飞速发展以及物…

VMware——Window11安装VMware17(图解版)

目录 一、VMware17百度云下载二、安装三、注册 一、VMware17百度云下载 下载链接:https://pan.baidu.com/s/1dv_Y7ig2LUFxeHvrG2rOTA 提取码:elih 二、安装 下载 VMware-workstation-full-17.0.2-21581411.exe 安装包后,右键以管理员身份运…

软考-访问控制技术原理与应用

本文为作者学习文章,按作者习惯写成,如有错误或需要追加内容请留言(不喜勿喷) 本文为追加文章,后期慢慢追加 by 2023年10月 访问控制概念 访问控制是计算机安全的一个重要组成部分,用于控制用户或程序如…

PHP的学习入门建议

学习入门PHP的步骤如下: 确定学习PHP的目的和需求,例如是为了开发网站还是为了与数据库交互等。学习PHP的基础语法和程序结构,包括变量、数据类型、循环、条件等。学习PHP的面向对象编程(OOP)概念和技术。学习与MySQL…

测试用例编写详解

一、前言 测试用例的编写需要按照一定的思路进行,而不是想到哪写到哪,一般测试机制成熟的公司都会有公司自己自定义的测试用例模板,以及一整套的测试流程关注点,当然我们自己在测试生涯中也应当积累一套自己的测试框架&#xff0…

【Proteus仿真】【Arduino单片机】蜂鸣器

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用蜂鸣器等。 主要功能: 系统运行后,蜂鸣器播放音乐。 二、软件设计 /* 作者:嗨小易(QQ&#x…

S4系统编辑屏幕报错 报错 RFC callback call rejected by whitelist

点击 Dialog 的布局 直接报错 经过检查,发现正式机和开发机在 SM59 TCP/IP链接 的 EU_SCRP_WN32不一样 把开发机的数据维护到生产机,就可以用了 RS_SCRP_GF_PROCESS_640RFC_GET_FUNCTION_INTERFACERS_SCRP_GF_PROCESS_640RS_SCRP_GF_RBUILDINFORS_SC…

会议OA小程序【首页布局】

目录 一. Flex布局介绍 1.1 什么是Flex布局 1.2 基本概念 1.3 Flex属性 二. 会议OA首页轮播图的实现 配置 Mock工具 swiper 效果展示 三. 会议OA首页会议信息布局 index.js index.wxml index.wxss 首页整体效果展示 一. Flex布局介绍 布局的传统解决方案&#x…

【LeetCode】54. 螺旋矩阵

题目链接 注意边界 和 方向变化 文章目录 Python3方法一: 计算每个元素 下一个元素的下标 ⟮ O ( m n ) 、 O ( m n ) ⟯ \lgroup O(mn)、O(mn) \rgroup ⟮O(mn)、O(mn)⟯方法二:按层模拟 ⟮ O ( m n ) 、 O ( 1 ) ⟯ \lgroup O(mn)、O(1) \rgroup…

【AIGC核心技术剖析】基于大规模弱监督的鲁棒语音识别【附源码】

论文研究了语音处理系统的能力,该系统只是为了预测互联网上的大量音频成绩单而训练的。当扩展到 680,000 小时的多语言和多任务监督时,生成的模型可以很好地推广到标准基准,并且通常与先前的完全监督结果竞争,但在零镜头传输设置中…

大势山维 | 全盘自主可控的实景三维中国建设解决方案

实景三维中国建设是面向新时期测绘地理信息事业服务于社会经济建设和生态文明建设的新定位、新需求。多年来,大势智慧与山维科技深耕数字化建设,以技术研发为立身之本,逐步成长为空间地理信息建设领域的领跑企业。 大势智慧围绕三维重建国产…

ICML2021 | RSD: 一种基于几何距离的可迁移回归表征学习方法

目录 引言动机分析主角(Principal Angle)表征子空间距离正交基错配惩罚可迁移表征学习实验数据集介绍 实验结果总结与展望 论文链接 相关代码已经开源 引言 深度学习的成功依赖大规模的标记数据,然而人工标注数据的代价巨大。域自适应&…

Mybatis-plus连接postgrel数据库主键自增问题

首先pg中没有直接设置主键自增这一说法,一般只能新建一个序列,可以使用Navicat创建 在mp的配置类中加入序列的配置: Bean public IKeyGenerator keyGenerator() {return new H2KeyGenerator(); }然后实体类的主键策略只能是INPUT&#xff0…