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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
python持久性管理pickle模块详细介绍
Feb 18 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
用tensorflow实现弹性网络回归算法
Jan 09 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
Python简单实现词云图代码及步骤解析
Jun 04 Python
Python参数传递及收集机制原理解析
Jun 05 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 Python
python 镜像环境搭建总结
Sep 23 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防注
2007/01/15 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
应用开发中涉及到的css和php笔记分享
2011/08/02 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
php中error与exception的区别及应用
2014/07/28 PHP
Linux系统中为php添加pcntl扩展
2016/08/28 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
javascript URL锚点取值方法
2009/02/25 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
vue-cli3.0 脚手架搭建项目的过程详解
2018/10/19 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
Python线程threading模块用法详解
2020/02/26 Python
Python分析最近大火的网剧《隐秘的角落》
2020/07/02 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
竞选生活委员演讲稿
2014/04/28 职场文书
安全月活动总结
2014/05/05 职场文书
维稳承诺书
2015/01/20 职场文书
淮海战役观后感
2015/06/11 职场文书
2016年社区“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python