Tkinter打包成EXE安装文件

news2024/11/25 6:46:10

打包成 .exe可执行文件

1. 安装PyInstaller,命令如下:

pip install pyinstaller

2. 编写你的Tkinter应用程序: 创建一个Python文件,例如app.py,并写入你的Tkinter代码。

3. 在 app.py 文件所在的目录使用PyInstaller将app.py打包成 .exe文件

pyinstaller --onefile --windowed app.py

打包后的目录结构,exe文件就在 dist 目录中

PyInstaller 的选项说明

参数说明
--onefile将所有文件打包成一个可执行文件
--windowed适用于GUI应用,防止打开命令行窗口
--add-data将额外的数据文件(如图像或配置文件)包含到包中,例如--add-data "data.txt;."
--icon为生成的exe文件设置图标,例如 --icon=favicon.ico
--clean在构建之前清理临时文件
--noconfirm在构建时不提示确认覆盖现有文件
--hidden-import添加未被自动检测到的模块,例如 --hidden-import=module_name

打包成 .exe安装文件

1. 下载并安装 NSIS 程序,下载地址:https://nsis.sourceforge.io/Download

2. 创建 NSIS 脚本文件 setup.nsi,脚本内容如下(使用时去除脚本中的中文注释):

# 自定义安装程序的名称
Outfile "app-setup.exe"
InstallDir "$PROGRAMFILES\app"
RequestExecutionLevel admin

Page directory
Page instfiles

Section "MainSection" SEC01
    SetOutPath "$INSTDIR"
    # 使用PyInstaller 打包后的.exe可执行文件路径
    File "D:\app\dist\app.exe"

    # 创建桌面快捷方式
    CreateShortCut "$DESKTOP\app.lnk" "$INSTDIR\app.exe" "" "$INSTDIR\app.exe" 0

    WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd

# 卸载相关
Section "Uninstall"
    Delete "$INSTDIR\app.exe"
    Delete "$DESKTOP\app.lnk"
	Delete "$INSTDIR\uninstall.exe"
    RMDir "$INSTDIR"
SectionEnd

这里先看一下目录结构

3. 打开 NSIS 软件,选择Compile NSI scripts

4. 将 NSIS 脚本文件 setup.nsi 拖拽到上面的窗口中

把 NSIS 脚本文件拖入到窗口中后,如果脚本文件没有问题,就会直接生成.exe安装程序,如下:

5. 双击app-setup.exe文件进行安装。(如果想让其他人安装你的程序,就把app-setup.exe文件发给其他人安装即可)

6. 安装成功效果图,如下

安装目录

桌面快捷方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190688.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统架构设计师⑤:系统性能

系统架构设计师⑤:系统性能 系统的性能指标主要分为2个方面:硬件和软件。 性能指标计算 关键词描述: ①平均每条指令的平均时钟周期个数(CPl,clockperinstruction) ②每(时钟)周期运行指令条数(IPC,instructionper…

OpenCV透视变换

#透视变换 import cv2 import numpy as np import matplotlib.pyplot as pltimg cv2.imread(coins.jpg,1)imgInfo img.shape height imgInfo[0] width imgInfo[1] #src 4->dst 4 (左上角 左下角 右上角 右下角) matSrc np.float32([[200,100],[200,400],[600,100],[wid…

数据驱动投资:AI在股票市场的应用

当ChatGPT首次亮相时,其卓越的语言处理能力立刻引起了许多行业的广泛关注,投资界也不例外。关于ChatGPT是否能应用于投资决策的问题,迅速成为热门讨论的焦点。 近期,加拿大多伦多大学和印度孟买理工学院的研究人员联合开展了一项…

Mysql:数据库和表增删查改基本语句

一、数据库操作 1)、数据库创建 创建数据库本质就是创建一个目录(ubuntu,创建的目录文件存放在/var/lib/mysql);后续创建表本质就是在该目录下创建文件(不同存储引擎,会创建的文件数目是不同的…

Linux进程概念2

前言 1. Linux真实的调度算法 首先cpu中有一个叫做runqueue的东西,这个东西就是去弄进程的调度的,里面有很多东西,这里我们就写这些了 其中task_struct*这个数组指向的是140个元素,其中0~99就是系统默认的进程,后面的…

ARM assembly: lesson 11

在之前,我们提到,当函数的参数小于等于4个时,我们会把它存放于寄存器中,但是如果函数参数大于4个,我们就需要通过stack去进行参数的存储,这毫无疑问,将增加代码操作的复杂性,因为我们需要对于栈…

国外透明代理IP解析:匿名性的全貌

网络世界中,透明代理IP是一个广受关注的话题。究竟什么国外透明代理IP?以及它的匿名性如何?本文将深入解析透明代理IP的定义及其匿名性,为您呈现一个清晰的认识。 1. 概念 透明代理IP是指在进行网络请求时,客户端&am…

(数据结构与算法)哈希表

哈希表把他当成一个key-values表

鸿蒙harmonyos next flutter混合开发之开发plugin(获取操作系统版本号)

创建Plugin为my_plugin flutter create --org com.example --templateplugin --platformsandroid,ios,ohos my_plugin 创建Application为my_application flutter create --org com.example my_application flutter_application引用flutter_plugin,在pubspec.yam…

梯度下降学习

前言:初步学习梯度下降, 不断根据梯度修改我们的参数,经过多次轮次得到使得我们损失函数最小的时候参数,后续我们可以通过类似的道理,更新我们的参数 假设我们的损失函数是 y x 1 2 x 2 2 y x1^2 x2^2 yx12x22,我…

什么是 HTTP Get + Preflight 请求

当在 Chrome 开发者工具的 Network 面板中看到 GET Preflight 的 HTTP 请求方法时,意味着该请求涉及跨域资源共享 (CORS),并且该请求被预检了。理解这种请求的背景,主要在于 CORS 的工作机制和现代浏览器对安全性的管理。 下面是在 Chrome …

常用排序算法(下)

目录 2.5 冒泡排序 2.6 快速排序 2.6 1 快速排序思路 详细步骤 2.6 2 快速排序递归实现 2.6 3快速排序非递归: 快排非递归的优势 非递归思路 1. 初始化栈 2. 将整个数组的起始和结束索引入栈 3. 循环处理栈中的子数组边界 4. 单趟排序 5. 处理分区后的子…

Linux驱动开发(速记版)--热插拔

第九十六章 热插拔简介 热插拔是指在设备运行时安全地插入或拔出硬件,无需关闭或重启系统。 它提供了方便性和灵活性,允许快速更换或添加硬件而无需中断任务。 以下是一些应用场景及支持热插拔所需的条件: 应用场景: USB设备&…

python中,try-except捕获异常的意义(通过ai智库学习)

python中,不但可以用try-except捕获异常, 还可以自定义异常提示字符串,更可以自定义捕获异常后的处置。 (笔记模板由python脚本于2024年10月03日 06:47:06创建,本篇笔记适合喜欢研究python的coder翻阅) 【学习的细节是欢悦的历程】…

交叠型双重差分法

交叠型双重差分法(Staggered Difference-in-Differences, Staggered DiD)是一种扩展的双重差分(Difference-in-Differences, DiD)方法,用于处理多个时间点的政策干预或处理组(treatment group)并…

每日读则推(四)

Whats this...? | An invitation letter n.邀请函 n.邀请(invite v.邀请) Can a tool grasp the meaning in a song? v. 握紧,理解 n.紧握,理解(力) Can it feel the melody, where emotions belong? …

C++ union的运用

// // Created by 徐昌真 on 2024/10/5. // #include <iostream> #include <cstring> using namespace std;//定义一个结构体(类) struct Info{char _name[20];int _role; //老师是0 同学是1union { //用union存放score和course 节省内存int score;char course[2…

全球十大独角兽(完整榜单),你猜中国占几席?

全球十大独角兽 10月3日&#xff0c;OpenAI 宣布已完成 66 亿美元融资&#xff0c;估值达 1570 亿美元&#xff0c;成为全球第三的独角兽。 给新来的读者重温一下"独角兽"的定义&#xff1a;估值超过10亿美元的未上市企业。 你可能会好奇&#xff0c;OpenAI 是第三&a…

Linux·进程概念(下)

1. 进程优先级 优先级就是获得某种资源的先后顺序&#xff0c;因为CPU资源是有限的&#xff0c;因此各个进程之间要去争取CPU的资源。 那么针对Linux操作系统下的PCB中&#xff0c;也就是task_struct结构体中&#xff0c;使用了int类型的变量记录了每个进程的优先级属性&#x…

WIFI网速不够是不是光猫的“路由模式”和“桥接模式”配置错了?

光猫&#xff08;光纤调制解调器&#xff09;是一种用于将光纤信号转换为数字信号的设备&#xff0c;通常用于家庭或企业网络中。光猫可以在不同的工作模式下运行&#xff0c;其中最常见的两种模式是“路由模式”和“桥接模式”。以下是这两种模式的详细解释及其优缺点。 一、路…