首页 > 解决方案 > 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_())

标签: pythoniconspyinstallerexe

解决方案


您可以尝试 auto-py-to-exe,它是一个方便的小脚本,可让您从 GUI 使用 pyinstaller,它会为您创建所需的终端命令。您可以使用 pip install auto-py-to-exe 获取它并使用命令 auto-py-to-exe 从终端启动它,您将看到一个名为 Icon 的部分,您可以在其中通过文件浏览器打开 .ico 文件窗户


推荐阅读