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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python在命令行下使用google翻译(带语音)
Jan 16 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
Python基于递归算法实现的走迷宫问题
Aug 04 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
Dec 25 Python
python pexpect ssh 远程登录服务器的方法
Feb 14 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
Python自定义一个异常类的方法
Jun 27 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
使用Django清空数据库并重新生成
Apr 03 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
SSI指令
2006/11/25 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
Php header()函数语法及使用代码
2013/11/04 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
PHP实现简单注册登录系统
2020/12/28 PHP
jQuery 连续列表实现代码
2009/12/21 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
2015/09/23 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
Angular.js如何从PHP读取后台数据
2016/03/24 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
JQuery手速测试小游戏实现思路详解
2016/09/20 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
JS中的算法与数据结构之列表(List)实例详解
2019/08/16 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
python 不以科学计数法输出的方法
2018/07/16 Python
python得到windows自启动列表的方法
2018/10/14 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
python 利用toapi库自动生成api
2020/10/19 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
现金出纳岗位职责
2014/03/15 职场文书
先进单位申报材料
2014/12/25 职场文书
2016新年致辞
2015/08/01 职场文书
心理学培训心得体会
2016/01/22 职场文书
Python使用永中文档转换服务
2022/05/06 Python