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多线程编程简单介绍
Apr 13 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
python实现数组插入新元素的方法
May 22 Python
python简单实现计算过期时间的方法
Jun 09 Python
python 类详解及简单实例
Mar 24 Python
Python学习小技巧之利用字典的默认行为
May 20 Python
Flask框架通过Flask_login实现用户登录功能示例
Jul 17 Python
python定位xpath 节点位置的方法
Aug 27 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
python报错: 'list' object has no attribute 'shape'的解决
Jul 15 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Python生成九宫格图片的示例代码
Apr 14 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
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
更改localhost为其他名字的方法
2014/02/10 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
使用js检测浏览器是否支持html5中的video标签的方法
2014/03/12 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
input输入框鼠标焦点提示信息
2015/03/17 Javascript
js时钟翻牌效果实现代码分享
2020/07/31 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
JS实现将链接生成二维码并转为图片的方法
2018/03/17 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
python创建进程fork用法
2015/06/04 Python
Python使用遗传算法解决最大流问题
2018/01/29 Python
Python闭包函数定义与用法分析
2018/07/20 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
新加坡交友网站:be2新加坡
2019/04/10 全球购物
新三好学生主要事迹
2014/01/23 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
承诺函范文
2015/01/21 职场文书
项目投资意向书范本
2015/05/09 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
React自定义hook的方法
2022/06/25 Javascript