python实例之pyqt5多窗口实现(python+pyqt5编写md5生成器)
类别:脚本大全 浏览量:2194
时间:2022-01-19 00:44:03 python实例之pyqt5多窗口实现
python+pyqt5编写md5生成器本文实例为大家分享了python+pyqt5编写md5生成器的具体代码,供大家参考,具体内容如下
学了一下pyqt5,写一个小程序来实践一下。
下图是程序界面:
下面是代码:
|
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.jpg" alt="python实例之pyqt5多窗口实现(python+pyqt5编写md5生成器)" border="0" /> 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 文件
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/u012755940/article/details/78273819
您可能感兴趣
- python交互执行shell脚本(python 利用文件锁单例执行脚本的方法)
- python线程池怎么设置(python自定义线程池控制线程数量的示例)
- python3.8爬虫需要的包(python爬取基于m3u8协议的ts文件并合并)
- python画佩奇(啥是佩奇?使用Python自动绘画小猪佩奇的代码实例)
- python创建一个xls文件(Python XlsxWriter模块Chart类用法实例分析)
- python的pickle用法(Python multiprocess pool模块报错pickling error问题解决方法分析)
- opencv提取图像轮廓python代码(Python基于opencv调用摄像头获取个人图片的实现方法)
- pythonpulp怎么使用(pyhanlp安装介绍和简单应用)
- python基础教学之125 装饰器简介(python3 property装饰器实现原理与用法示例)
- pythonlambda详解(Python的条件表达式和lambda表达式实例)
- python怎么操作mysql(详解Python的数据库操作pymysql)
- python中字典的常用操作(11个Python3字典内置方法大全与示例汇总)
- python散点图(python scatter散点图用循环分类法加图例)
- pythonmatplotlib实例(Python3使用Matplotlib 绘制精美的数学函数图形)
- python爬虫出租屋(python爬虫租房信息在地图上显示的方法)
- 笨办法学python3目录(如何愉快地迁移到 Python 3)
- 哪版孙悟空最萌 黄渤躺萌了(哪版孙悟空最萌)
- 融入小人物的喜怒哀乐,黄渤饰演的角色为什么让人观看时欲罢不能(融入小人物的喜怒哀乐)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
热门推荐
- mysql视图管理方法(MySQL 视图View原理解析)
- css垂直左右居中的方式(css常用元素水平垂直居中方案)
- dockerpull的镜像位置(解决docker pull镜像报错的问题)
- isapi和cgi限制
- php常见的数组函数(用php定义一个数组最简单的方法)
- sqlserver数据库同步复制(SqlServer将数据库中的表复制到另一个数据库)
- mvc JavaScriptResult的用法
- mysql查看视图注释(详解MySQL的sql_mode查询与设置)
- canvas绘制二进制图片(Canvas获取视频第一帧缩略图的实现)
- vs连接sql语句(vs code连接sql server数据库步骤及遇到的问题小结)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9