python - Python到exe但保留图标
问题描述
我是 python 新手,我还不太了解。所以,我想将我的 python 项目转换为一个 exe 文件,所以我按照每个 youtube 教程、终端、pyinstaller 和其他东西(我使用 Pychram)中的步骤进行操作,但很快我意识到我为我的 exe 设置的图标是'除非它与 dist 和 .spec 文件在同一个文件夹中,否则不会加载。我决定搜索一些,我在这个网站上找到了一种方法:https ://clay-atlas.com/us/blog/2020/11/04/python-en-package-pyinstaller-picture/ (第三种方法),但是我无法解码它,我只需要用我的文件名替换一些东西,但我不明白到底在哪里,比如 pic2str 是变量还是项目名称?谢谢。(如果您需要,代码可能会稍微从网站复制到此处)
import base64
def pic2str(file, functionName):
pic = open(file, 'rb')
content = '{} = {}\n'.format(functionName, base64.b64encode(pic.read()))
pic.close()
with open('pic2str.py', 'a') as f:
f.write(content)
if __name__ == '__main__':
pic2str('test.png', 'explode')
和这个:
import sys
import base64
from io import BytesIO
from PyQt5 import QtWidgets
from PyQt5.QtGui import *
from test import Ui_MainWindow
from PIL import Image, ImageQt
from pic2str import explode
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Load byte data
byte_data = base64.b64decode(explode)
image_data = BytesIO(byte_data)
image = Image.open(image_data)
# PIL to QPixmap
qImage = ImageQt.ImageQt(image)
image = QPixmap.fromImage(qImage)
# QPixmap to QLabel
self.ui.label.setPixmap(image)
self.ui.label.setScaledContents(True)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
sys.exit(app.exec_())
解决方案
您可以尝试 auto-py-to-exe,它是一个方便的小脚本,可让您从 GUI 使用 pyinstaller,它会为您创建所需的终端命令。您可以使用 pip install auto-py-to-exe 获取它并使用命令 auto-py-to-exe 从终端启动它,您将看到一个名为 Icon 的部分,您可以在其中通过文件浏览器打开 .ico 文件窗户
推荐阅读
- ios - 通过按钮将文本插入textView然后删除
- javascript - 身份验证后重定向到 Passport.js 中的上一页(不重复)Node.js
- reactjs - 在单个 setState 调用上多次响应状态更新
- pascal - 无法编译 - Turbo Pascal
- mysql - 在 Ubuntu 20.04 上从 MySQL 迁移到 MariaDB
- javascript - d3.js 轴添加刻度值
- git - 写入 node_modules 目录时的管道权限问题
- c++ - 编译错误:Boost.Range / MPL 中没有名为“type”的类型
- java - 构造转换器失败:错误:无法解析 C:
- java - 将类的实例转换为服务(android/Java)时的问题