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获取远程文件大小的函数代码分享
May 13 Python
python中的闭包用法实例详解
May 05 Python
Windows下python2.7.8安装图文教程
May 26 Python
Python实现在某个数组中查找一个值的算法示例
Jun 27 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
numpy基础教程之np.linalg
Feb 12 Python
python滑块验证码的破解实现
Nov 10 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
Python gevent协程切换实现详解
Sep 14 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
Dec 22 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高级编程-函数-郑阿奇
2011/07/04 PHP
php一行代码获取文件后缀名实例分析
2014/11/12 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
JavaScript库 开发规则
2009/01/31 Javascript
javascript中"/"运算符常见错误
2010/10/13 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
Treegrid的动态加载实例代码
2016/04/29 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
node使用Mongoose类库实现简单的增删改查
2018/11/08 Javascript
vueScroll实现移动端下拉刷新、上拉加载
2019/03/22 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
tornado捕获和处理404错误的方法
2014/02/26 Python
Python实现的几个常用排序算法实例
2014/06/16 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
露营世界:Camping World
2017/02/02 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
介绍一下Java中的Class类
2015/04/10 面试题
软件测试英文面试题
2012/10/14 面试题
优秀交警事迹材料
2014/01/26 职场文书
旅行社优秀创业计划书
2014/08/16 职场文书
教师岗位职责
2015/02/03 职场文书
人事聘任通知
2015/04/21 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书