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网络编程学习笔记(五):socket的一些补充
Jun 09 Python
python django集成cas验证系统
Jul 14 Python
python中使用pyhook实现键盘监控的例子
Jul 18 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
分享Python字符串关键点
Dec 13 Python
举例简单讲解Python中的数据存储模块shelve的用法
Mar 03 Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 Python
Python模块文件结构代码详解
Feb 03 Python
Django 根据数据模型models创建数据表的实例
May 27 Python
python区块及区块链的开发详解
Jul 03 Python
Python列表解析操作实例总结
Feb 26 Python
python异步Web框架sanic的实现
Apr 27 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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
php标签云的实现代码
2012/10/10 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
WordPress中用于创建以及获取侧边栏的PHP函数讲解
2015/12/29 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
读jQuery之十 事件模块概述
2011/06/27 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
javascript基本语法
2016/05/31 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
Javascript var变量删除原理及实现
2020/08/26 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
浅谈Tensorflow模型的保存与恢复加载
2018/04/26 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
opencv python Canny边缘提取实现过程解析
2020/02/03 Python
Python实现自动打开电脑应用的示例代码
2020/04/17 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
师范教师毕业鉴定
2014/01/13 职场文书
总经理的岗位职责
2014/02/23 职场文书
高三毕业寄语
2014/04/10 职场文书
火锅店的活动方案
2014/08/15 职场文书
运动会广播稿300字
2015/08/19 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
使用numpy实现矩阵的翻转(flip)与旋转
2021/06/03 Python