Python开发.exe小工具的详细步骤


Posted in Python onJanuary 27, 2021

v1.0.0

完成基础框架、初始功能

背景:为了提高日常工作效率、学习界面工具开发,可以将一些常用的功能集成到一个小的测试工具中,供大家使用。

一、环境

Python3,pyinstall

pyinstall安装:

pip install pyinstaller   (会自动下载future,pywin32,pyinstaller)

或者采用国内镜像 pip install -i https://pypi.douban.com/simple/ pyinstaller(豆瓣源)

二、代码准备,直接上一个可以运行的代码

# coding:utf-8
# @author : csl
# @description : 小工具开发
 
from tkinter import *
import hashlib
import time
 
LOG_LINE_NUM = 0
 
class MY_GUI_SET():
 """小工具"""
 def __init__(self, init_window_name):
  self.init_window_name = init_window_name
 
 def set_init_window(self):
  self.init_window_name.title("内部测试工具 开发者:潜行100 问题反馈:QQ35643856")
  self.init_window_name.geometry("1068x681+10+10")
  # init_window["bg"] = "pink"
  self.init_window_name.attributes("-alpha", 0.9) # 虚化 值越小虚化程度越高
 
  # 标签
  self.init_data_label = Label(self.init_window_name, text="待处理数据")
  self.init_data_label.grid(row=0, column=0)
  self.result_data_label = Label(self.init_window_name, text="输出结果")
  self.result_data_label.grid(row=0, column=12)
  self.log_label = Label(self.init_window_name, text="日志")
  self.log_label.grid(row=12, column=0)
  # 文本框
  self.init_data_Text = Text(self.init_window_name, width=67, height=35) # 原始数据录入框
  self.init_data_Text.grid(row=1, column=0, rowspan=10, columnspan=10)
  self.result_data_Text = Text(self.init_window_name, width=70, height=49) # 处理结果展示
  self.result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10)
  self.log_data_Text = Text(self.init_window_name, width=66, height=9) # 日志框
  self.log_data_Text.grid(row=13, column=0, columnspan=10)
  # 按钮
  self.str_trans_to_md5_button = Button(self.init_window_name, text="字符串转MD5", bg="lightblue", width=10,
            command=self.str_trans_to_md5) # 调用内部方法 加()为直接调用
  self.str_trans_to_md5_button.grid(row=1, column=11)
 
 # 功能函数
 def str_trans_to_md5(self):
  src = self.init_data_Text.get(1.0, END).strip().replace("\n", "").encode()
  # print("src =",src)
  if src:
   try:
    myMd5 = hashlib.md5()
    myMd5.update(src)
    myMd5_Digest = myMd5.hexdigest()
    # print(myMd5_Digest)
    # 输出到界面
    self.result_data_Text.delete(1.0, END)
    self.result_data_Text.insert(1.0, myMd5_Digest)
    self.write_log_to_Text("INFO:str_trans_to_md5 success")
   except:
    self.result_data_Text.delete(1.0, END)
    self.result_data_Text.insert(1.0, "字符串转MD5失败")
  else:
   self.write_log_to_Text("ERROR:str_trans_to_md5 failed")
 
 # 获取当前时间
 def get_current_time(self):
  current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
  return current_time
 
 # 日志动态打印
 def write_log_to_Text(self, logmsg):
  global LOG_LINE_NUM
  current_time = self.get_current_time()
  logmsg_in = str(current_time) + " " + str(logmsg) + "\n" # 换行
  if LOG_LINE_NUM <= 7:
   self.log_data_Text.insert(END, logmsg_in)
   LOG_LINE_NUM = LOG_LINE_NUM + 1
  else:
   self.log_data_Text.delete(1.0, 2.0)
   self.log_data_Text.insert(END, logmsg_in)
 
def gui_start():
 init_window = Tk()
 MY_GUI_SET(init_window).set_init_window()
 
 init_window.mainloop()
 
gui_start()

三、打包.exe文件

如果你的Python安装目录下的Scripts路径是加到了系统环境变量中,那么可以在任意路劲下直接运行如下命令:

pyinstaller.exe -F -icon=F:\testTools D:/pyWorkspace/py_uiTools/ABC_conversion/ABC_conversion.py

如果带-icon参数打包运行时报错,那么可以在你想保存的文件路劲下直接运行如下命令:

pyinstaller.exe -F D:/pyWorkspace/py_uiTools/ABC_conversion/ABC_conversion.py

Python开发.exe小工具的详细步骤

Python开发.exe小工具的详细步骤

后记(打包补充):

1.程序设置自定义图标:pyinstaller -F -i ico_path  py_path 

首先需要下载一张正常的ico,不能用直接修改后缀的。

下载图片:

 https://www.easyicon.net

图片改为ico:

http://www.ico.la/

输入命令 pyinstaller -F -i "demo.ico" "main.py"

2.报错提示:

pyinstaller -F -i "demo.ico" "main.py" 命令格式一定是先图标路径,再程序路径。

路径最好为英文,没有中文字符;脚本名称里没有特殊字符如 .

使用utf8编码

图标文件必须是正常格式,不能直接更改后缀。

tuble index out of range ---》pyinstaller版本尚未支持python的版本

3.窗口程序

使用 pyinstaller -F -w  -i ico_path  py_path ,这样脚本不会弹出命令窗,前提是用了GUI库. 

4.导入模块问题

pyinstaller -F -w  -i  --hidden-import queue ico_path  py_path 加上选项

如:pyinstaller.exe -F -w C:\YOU\py_testTools\ABC_conversion/ABC_conversion.py

Python开发.exe小工具的详细步骤

到此这篇关于Python开发.exe小工具的文章就介绍到这了,更多相关Python小工具内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python3使用urllib模块制作网络爬虫
Apr 08 Python
Python使用内置json模块解析json格式数据的方法
Jul 20 Python
浅析Git版本控制器使用
Dec 10 Python
python操作列表的函数使用代码详解
Dec 28 Python
对python制作自己的数据集实例讲解
Dec 12 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
Django ORM filter() 的运用详解
May 14 Python
Python爬虫获取豆瓣电影并写入excel
Jul 31 Python
Scrapy 配置动态代理IP的实现
Sep 28 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
Jan 27 #Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 #Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 #Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
Jan 27 #Python
Python利用socket模块开发简单的端口扫描工具的实现
Jan 27 #Python
Python爬虫实现selenium处理iframe作用域问题
Jan 27 #Python
python利用appium实现手机APP自动化的示例
Jan 26 #Python
You might like
php数组的概述及分类与声明代码演示
2013/02/26 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
jQuery技巧总结
2011/01/01 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
浅析JavaScript中的typeof运算符
2013/11/30 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
Javascript对象Clone实例分析
2015/06/09 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
使用puppeteer破解极验的滑动验证码
2018/02/24 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
使用Vuex解决Vue中的身份验证问题
2018/09/28 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
Vue多选列表组件深入详解
2021/03/02 Vue.js
python入门教程之识别验证码
2017/03/04 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
JavaScript实现一维数组转化为二维数组
2018/04/17 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
Pycharm Git 设置方法
2020/09/15 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
加拿大探亲邀请信
2014/01/28 职场文书
高中军训感言500字
2014/02/24 职场文书
会议简报格式范文
2015/07/20 职场文书