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 26 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
Python 搭建Web站点之Web服务器与Web框架
Nov 06 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
python主线程捕获子线程的方法
Jun 17 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
浅谈Python反射 & 单例模式
Mar 21 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
python中怎么表示空值
Jun 19 Python
利用Python优雅的登录校园网
Oct 21 Python
一文搞懂如何实现Go 超时控制
Mar 30 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中的时间显示
2007/01/18 PHP
PHP GD 图像处理组件的常用函数总结
2010/04/28 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
探讨多键值cookie(php中cookie存取数组)的详解
2013/06/06 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
php计算两个坐标(经度,纬度)之间距离的方法
2015/04/17 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
js实现图片360度旋转
2017/01/22 Javascript
node.js的事件机制
2017/02/08 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python下rrdtool模块的基本使用方法
2015/11/13 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
python实现程序重启和系统重启方式
2020/04/16 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
J2EE相关知识面试题
2013/08/26 面试题
理工类毕业自我鉴定
2014/02/20 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
捐款通知怎么写
2015/04/24 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
python对文档中元素删除,替换操作
2022/04/02 Python