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 相关文章推荐
python去掉字符串中重复字符的方法
Feb 27 Python
Python的SQLAlchemy框架使用入门
Apr 29 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
python中 chr unichr ord函数的实例详解
Aug 06 Python
python解析含有重复key的json方法
Jan 22 Python
python占位符输入方式实例
May 27 Python
python爬虫之自制英汉字典
Jun 24 Python
python读取图片的几种方式及图像宽和高的存储顺序
Feb 11 Python
python实现俄罗斯方块小游戏
Apr 24 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
Python自动发送和收取邮件的方法
Aug 12 Python
Python中使用Selenium环境安装的方法步骤
Feb 22 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
有关PHP中MVC的开发经验分享
2012/05/17 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
javascript中关于执行环境的杂谈
2011/08/14 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
多种js图片预加载实现方式分享
2016/02/19 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
详解React Native顶|底部导航使用小技巧
2017/09/14 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
Python类的动态修改的实例方法
2017/03/24 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
生物制药毕业生自荐信
2013/10/16 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
毕业典礼主持词
2015/06/29 职场文书
Java Socket实现多人聊天系统
2021/07/15 Java/Android