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 相关文章推荐
Django发送html邮件的方法
May 26 Python
Python2.x中文乱码问题解决方法
Jun 02 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
Jul 15 Python
Python3 queue队列模块详细介绍
Jan 05 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
hmac模块生成加入了密钥的消息摘要详解
Jan 11 Python
Python中整数的缓存机制讲解
Feb 16 Python
python time.sleep()是睡眠线程还是进程
Jul 09 Python
解决python Jupyter不能导入外部包问题
Apr 15 Python
Java多线程实现四种方式原理详解
Jun 02 Python
基于OpenCV的路面质量检测的实现
Nov 04 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.ini中文版
2006/10/09 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
php实现短信发送代码
2015/07/05 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
2018/08/24 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python调用百度API实现人脸识别
2020/11/17 Python
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
上学迟到的检讨书
2014/01/11 职场文书
索桥的故事教学反思
2014/02/06 职场文书
应用数学专业求职信
2014/03/14 职场文书
2014年接待工作总结
2014/11/26 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
初中作文评语集锦
2014/12/25 职场文书
针对吵架老公保证书
2015/05/08 职场文书
推广普通话的宣传语
2015/07/13 职场文书
2016继续教育研修日志
2015/11/13 职场文书
如何写好开幕词?
2019/06/24 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书
MySql 缓存查询原理与缓存监控和索引监控介绍
2021/07/02 MySQL