python+pyqt5编写md5生成器


Posted in Python onMarch 18, 2019

本文实例为大家分享了python+pyqt5编写md5生成器的具体代码,供大家参考,具体内容如下

学了一下pyqt5,写一个小程序来实践一下。

下图是程序界面:

python+pyqt5编写md5生成器

下面是代码:

import hashlib, os, sys

from PyQt5.QtGui import QFont, QIcon
from PyQt5.QtWidgets import (QFileDialog,
 QGridLayout, QLineEdit, QTextEdit,QLabel, QWidget, QToolTip, 
 QPushButton, QApplication)
from PyQt5.QtCore import QCoreApplication

#小文件的处理函数
def get_md5_small(file_path):
 md5 = None
 if os.path.exists(file_path) and os.path.isfile(file_path):
  with open( file_path, 'rb' ) as f:
   md5_obj = hashlib.md5()
   md5_obj.update( f.read() )
   hash_code = md5_obj.hexdigest()

   md5 = str(hash_code).lower()

 return md5

#大文件的处理函数
def get_md5_big(file_path):
 md5 = None
 if os.path.exists(file_path) and os.path.isfile(file_path):
  with open( file_path, 'rb' ) as f:
   md5_obj = hashlib.md5()
   while True:
    d = f.read(8096)
    if not d:
     break
    md5_obj.update(d)
   hash_code = md5_obj.hexdigest()
   md5 = str( hash_code ).lower()

 return md5

class MainBody(QWidget):
 def __init__(self):
  super(MainBody, self).__init__()
  self.init()

 def init(self):
  #布局
  grid = QGridLayout()
  self.setLayout(grid)
  grid.setSpacing(10)

  #文件路径
  self.m_tedit = QTextEdit()
  self.m_tedit.setToolTip( u'可以拖拽文件到这里来' )
  grid.addWidget(self.m_tedit, 1, 0, 2, 3)

  #四个按钮
  self.m_select_btn = QPushButton(u'选择文件')
  self.m_select_btn.clicked.connect( self.select_func )

  self.m_generate_btn = QPushButton(u'生成')
  self.m_generate_btn.clicked.connect( self.generate_func )

  self.m_clear_btn = QPushButton(u'清空')
  self.m_clear_btn.clicked.connect( self.clear_func )

  self.m_copy_btn = QPushButton(u'复制')
  self.m_copy_btn.clicked.connect( self.copy_func )

  grid.addWidget(self.m_select_btn, 3, 0)
  grid.addWidget(self.m_generate_btn, 3, 1)
  grid.addWidget(self.m_clear_btn, 3, 2)
  grid.addWidget(self.m_copy_btn, 5, 1)

  #md5的输出区域
  self.m_output = QLineEdit()
  grid.addWidget(self.m_output, 4, 0, 1, 3)

  self.setGeometry(300,300,300,200)
  self.setWindowTitle(u"md5生成器")
  self.setWindowIcon(QIcon('icon.png'))
  self.show()

 #选择文件
 def select_func(self):
  filename, ok = QFileDialog.getOpenFileName(self, "Open file", "C:/Users/Administrator/Desktop")
  print(os.path.getsize(filename))
  self.m_tedit.setText( filename )
  self.m_output.clear()

 #生成md5按钮
 def generate_func(self):
  path = self.m_tedit.toPlainText()
  if path.startswith( 'file:///' ):
   path = path[8:]

  if os.path.exists(path) and os.path.isfile(path):
   #200M以上的当作大文件
   if os.path.getsize(path) >= 200*1024*1204:
    md5 = get_md5_big( path )
   else:
    md5 = get_md5_small( path )
   self.m_output.setText( md5 )

 def clear_func(self):
  self.m_tedit.clear()
  self.m_output.clear()

 #复制
 def copy_func(self):
  clipboard = QApplication.clipboard()
  clipboard.setText( self.m_output.text() )

if __name__ == "__main__":
 app = QApplication(sys.argv)
 mb = MainBody()
 sys.exit( app.exec_() )

最后用 pyinstaller 打包成 exe 文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
python原类、类的创建过程与方法详解
Jul 19 Python
pytorch 输出中间层特征的实例
Aug 17 Python
基于python实现把图片转换成素描
Nov 13 Python
python绘制BA无标度网络示例代码
Nov 21 Python
Pytorch转tflite方式
May 25 Python
python+pyqt5实现图片批量缩放工具
Mar 18 #Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 #Python
PyQt5实现简易计算器
May 30 #Python
Python实现简单层次聚类算法以及可视化
Mar 18 #Python
PyQt5实现简单数据标注工具
Mar 18 #Python
Python简单I/O操作示例
Mar 18 #Python
python实现简单图片物体标注工具
Mar 18 #Python
You might like
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
几种响应式文字详解
2017/05/19 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
vue 出现data-v-xxx的原因及解决
2020/08/04 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
对python中使用requests模块参数编码的不同处理方法
2018/05/18 Python
django反向解析和正向解析的方式
2018/06/05 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
flask框架中的cookie和session使用
2021/01/31 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
致1500米运动员广播稿
2014/02/07 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
老干部工作先进事迹
2014/08/17 职场文书
农村党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
房贷收入证明范本
2015/06/12 职场文书
婚育证明样本
2015/06/16 职场文书
2015初中教导处工作总结
2015/07/21 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
python实现简单的聊天小程序
2021/07/07 Python