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实现连接mongodb的方法
May 08 Python
window下eclipse安装python插件教程
Apr 24 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
pandas中ix的使用详细讲解
Mar 09 Python
django xadmin 管理器常用显示设置方式
Mar 11 Python
Python3 mmap内存映射文件示例解析
Mar 23 Python
python实现磁盘日志清理的示例
Nov 05 Python
利用Python发送邮件或发带附件的邮件
Nov 12 Python
Python通过loop.run_in_executor执行同步代码 同步变为异步
Apr 11 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
php之CodeIgniter学习笔记
2013/06/17 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
2013/12/25 PHP
jQuery插件开发全解析
2012/10/10 Javascript
JS实现OCX控件的事件响应示例
2014/09/17 Javascript
jquery实现动态画圆
2014/12/04 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
2015/08/27 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
python处理圆角图片、圆形图片的例子
2014/04/25 Python
python计算N天之后日期的方法
2015/03/31 Python
python获取交互式ssh shell的方法
2019/02/14 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
python打包成so文件过程解析
2019/09/28 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
pytorch实现建立自己的数据集(以mnist为例)
2020/01/18 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
python定义具名元组实例操作
2021/02/28 Python
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
售后求职信范文
2014/03/15 职场文书
见习期自我鉴定范文
2014/03/19 职场文书
服装设计专业自荐信
2014/06/17 职场文书
支行行长竞聘报告
2014/11/06 职场文书
护士业务学习心得体会
2016/01/25 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书