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 25 Python
python实现绘制树枝简单示例
Jul 24 Python
python打开url并按指定块读取网页内容的方法
Apr 29 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
Nov 20 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
python 子类调用父类的构造函数实例
Mar 12 Python
python代码如何注释
Jun 01 Python
Pycharm无法打开双击没反应的问题及解决方案
Aug 17 Python
Python lambda表达式原理及用法解析
Aug 18 Python
Python环境配置实现pip加速过程解析
Nov 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
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
php 猴子摘桃的算法
2017/06/20 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
jquery实现动态改变css样式的方法分析
2019/05/27 jQuery
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Python Web编程之WSGI协议简介
2018/07/18 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
Python几种常见算法汇总
2020/06/02 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
Python实现疫情地图可视化
2021/02/05 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
CSS3实现时间轴特效
2020/11/02 HTML / CSS
代码中finally中的代码会不会执行
2012/02/06 面试题
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书