(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)

由于网上只讲述原理的文章太多,怎么使用的文章太少,所以本人文章只负责展示效果及代码注释,不着重讲解原理

Python-tkinter-pyinstaller项目之EXE打包器

  • 一、前言
  • 二、建立根窗口
  • 三、添加控件
  • 四、封装tkinterGUI的python代码展示
  • 五、封装kivyGUI的python代码展示
  • 总结


一、前言

有没有被pyinstaller打包折磨的死去活来?有没有苦恼于pyinstaller打出的包是一个很大的exe文件,而其他打包库又不熟练?有没有想过只需一个按钮就能把python代码打包成exe?有没有羡慕打包的exe文件像主流软件一样有很多依赖项看起来很高大上?还在各种查询如何python代码打包后没有cmd黑框?

说在前面,请仔细阅读:
1.本EXE打包器打包你自己的代码时,请注意:如果GUI编程使用的是tkinter或者本文封装的tkinter,打包后可以正常运行,其他库正在研究配置如QT等。
2.打包前,请仔细运行你的python代码,打包后出现问题根据我多年的经验一般是代码漏洞。
3.若使用kivy库编写的GUI,请确保电脑中已正确安装kivy库文件。
4.打包时,请在软件上点击右侧切换使用的GUI库,配置正确的GUI
5.若未使用任何的GUI库,请选择默认的tkinter系列,因为kivy系列需要安装kivy库才能正常运行
那么这篇文章将解决你上述已经其他的疑惑,本文使用Python tkinter pyinstaller构建了一种EXE打包器软件。使用python构建代码,配合自定义封装的tkinter库实现GUI界面,并利用 pyinstaller实现exe打包功能。那么开始展示EXE打包器软件项目,软件界面如下:
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第1张图片

二、建立根窗口

本文使用自定义封装的tkinter库实现GUI,解决python在GUI方面的不太友好性。废话不多说,先上代码,点击获取Headerfile

from Headerfile import *
class Python代码EXE打包器():
    def __init__(self):
    	##参数分别为窗口名称、宽度、高度、背景颜色、ico图标文件(为''表示无)
        self.根窗体 = MainWindows('Python代码EXE打包器',865,300,'green','')
if __name__ == '__main__':
    Python代码EXE打包器().根窗体.MainWindows.mainloop()

(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第2张图片

三、添加控件

在建立的根窗口上定义GUI的变量并添加控件:
点击获取Headerfile

from Headerfile import *
class Python代码EXE打包器():
    def __init__(self):
        self.根窗体 = MainWindows('Python代码EXE打包器',865,300,'green','图标.ico')
        self.initvariable()
        self.initweight()

    def initvariable(self):
    	###定义GUI的string类型变量,参数为初始化的值
        self.mainpy文件路径 = InitStringVariable('')
        self.mainpy文件夹 = InitStringVariable('')
        self.main文件名称 = InitStringVariable('')
        self.ico图标名称 = InitStringVariable('')
        self.输出文件夹 = InitStringVariable('')
        self.打包后文件名 = InitStringVariable('')
        self.生成exe名称 = InitStringVariable('')
        self.文件所在的盘 = InitStringVariable('')
        ###定义GUI的int类型变量,参数为初始化的值
		self.状态切换变量 = InitIntVariable(0)
		
    def initweight(self):
##定时器函数,参数分别为定时时间(ms),是否循环定时,定时到执行的函数,执行函数的参数(列表形式)##
        ClockTime(500,True,self.定时函数,[])
##标题控件,参数分别为放置的窗体,[行,列,跨行数,跨列数],内容,字体大小,[背景颜色,字体颜色]##
        TitleView(self.根窗体,[0,0,1,2],'python代码EXE打包器',40,['green','white'])
##路径选择控件,参数分别为放置的窗体,[行,列,跨行数,跨列数],控件名称,绑定的变量,字体大小,宽度,背景颜色##  
        PathChooseView(self.根窗体,[1,0,1,2],'main.py路径:',self.mainpy文件路径,20,25,'darkturquoise')
##名称数据显示控件, 参数分别为放置的窗体,[行,列,跨行数,跨列数],控件名称,绑定的变量,字体大小,宽度,背景颜色##      
        NameDataView(self.根窗体,[2,0,1,1],'main.py文件夹',self.mainpy文件夹,15,25,'deepskyblue')
        NameDataView(self.根窗体,[3,0,1,1],'main文件名称',self.main文件名称,15,25,'deepskyblue')
        NameDataView(self.根窗体,[3,1,1,1],'ico图标名称',self.ico图标名称,15,25,'deepskyblue')
        NameDataView(self.根窗体,[4,0,1,1],'输出文件夹路径',self.输出文件夹,15,25,'dodgerblue')
##多状态切换控件, 参数分别为放置的窗体,[行,列,跨行数,跨列数],控件名称,状态名称列表,状态数组变量,字体大小,背景颜色    
        MultiStatuSwitch(self.根窗体,[4,1,1,1],'点击右侧切换使用的GUI库',['tkinter系列','kivy系列'],self.状态切换变量,15,'dodgerblue')
        NameDataView(self.根窗体,[5,0,1,1],'打包后文件夹名',self.打包后文件名,15,25,'dodgerblue')
        NameDataView(self.根窗体,[5,1,1,1],'生成exe名称',self.生成exe名称,15,25,'dodgerblue')
##按钮控件,参数分别为放置的窗体,[行,列,跨行数,跨列数],控件名称,字体大小,背景颜色,执行函数,执行函数的参数(列表形式)##                 
        ButtonsView(self.根窗体,[6,0,1,2],'开始生成',20,'lightpink',self.打包生成,[])
    
    def 定时函数(self,参数):
        pass
    
    def 打包生成(self,参数):
        pass
if __name__ == '__main__':
    Python代码EXE打包器().根窗体.MainWindows.mainloop()

(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第3张图片

本封装库有一个功能,控件可跟随窗口大小的变化重新布局:
例如,将主窗口的宽度拖小,由于主窗口太小,且控件有字体大小限制,所以将显示不全
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第4张图片
若将主窗口最大化:
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第5张图片
或者向下拖拽:
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第6张图片

四、封装tkinterGUI的python代码展示

(1)例如:打包一个简单的python代码,你需要做以下工作:
1.新建一个两级的文件夹,名字随便起,但不要太诡异!
2.将你的main.py(就是py代码的主函数所在的文件移入程序文件夹),以及你自己调用的文件,说白了就是把你原来的整个项目粘贴进去就行了
3.将的主函数所在的文件命名为main.py或者main.pyw,这个是必须的,因为为规范软件搜寻的main文件,强制使用者为主函数所在的文件命名。
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第7张图片

import tkinter as tk

class 一个GUI界面类():
    def __init__(self,模块):
        ##通过初始化传参声明一个tkinter
        self.界面GUI = 模块
        ##设置窗口标题
        self.界面GUI.title('打包测试')
        ##设置窗口大小
        self.界面GUI.geometry("560x450")
        ##设置固定窗口大小,不能拖拽改变
        self.界面GUI.resizable(0,0)
        ##设置窗口背景颜色,如想改变颜色,可百度搜索tkinter背景颜色
        self.界面GUI.config(bg='Beige')
       
if __name__ == "__main__":
    ##声明一个tkinter
    root = tk.Tk()
    ##建立类
    一个GUI界面类(root)  
    ##消息循环,并保持窗口存在
    root.mainloop()

此时双击main.py运行是有cmd命令框的存在的
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第8张图片
(2)现在启动软件,选择main.py所在的路径:
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第9张图片

程序会自动生成打包后的文件夹名,以及生成exe的名称,这两个都来源于你的第二级文件夹名称,若想更改,请事先将第二级文件夹名字想好,还会自动搜索你选择路径下的main.py,以及ico图标名称(为空则使用python默认的图标)
(3)点击生成按钮,等待生成完毕,打包使用的是pyinstaller,若打包后的exe运行报错,还请仔细检查的python代码运行时你自定义的东西(文件、文件夹等),在打包后的文件夹中是否存在。
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第10张图片

(4)点击打开exe文件夹,可用看到EXE打包器已成功将打包后exe所需的依赖项打包进来
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第11张图片
(5)双击exe运行,与python代码的运行的结果相同,只是没有了cmd窗口(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第12张图片

五、封装kivyGUI的python代码展示

(1)以简单的kivy代码为例,代码如下:

from kivy.app import App
from kivy.uix.stacklayout import StackLayout
from kivy.uix.label import Label
from kivy.core.window import Window
from kivy.utils import get_color_from_hex
class 布局器(StackLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
        self.add_widget(Label(text = 'HHHHHH',font_size = 50))
      

class 计算器(App):
    def build(self):
        Window.clearcolor = get_color_from_hex('#66CDAA')
        return 布局器()

if __name__ == '__main__':
    计算器().run()

(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第13张图片
(2)启动软件,选择main.py路径,并切换使用的GUI库
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第14张图片
(3)点击生成按钮,等待生成完毕
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第15张图片
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第16张图片
(4)双击exe运行,与python代码的运行的结果相同
(三)Python-tkinter-pyinstaller项目之EXE打包器(项目展示版)_第17张图片

总结

本文实现了一种Python tkinter pyinstaller的EXE打包器,用于生成EXE文件及其依赖文件,完整的代码请浏览Python-tkinter-pyinstaller项目之EXE打包器(代码展示版),或者直接下载安装包使用安装包链接

你可能感兴趣的:(python,项目设计大全(项目展示),python,tkinter,exe,pyinstaller,python程序打包exe)