gpt4 book ai didi

python - 如何在 PyQt5 中使用 PyInstaller --onefile 选项和 resource_path 通过样式表添加图标?

转载 作者:太空宇宙 更新时间:2023-11-03 20:15:20 25 4
gpt4 key购买 nike

所以基本上我想做的是通过样式表(QSS)向组合框添加一个向下箭头,这样我就可以使用 PyInstaller 将 py.file 与 --onefile 选项捆绑在一起:代码是这样的,但它似乎不起作用:

QComboBox::drop-down{
image: url(resource_path("icon_example.png"))
}

资源路径方法是:

def resource_path(self,relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)

最佳答案

以下代码是我使用的,并且运行良好。

import sys
from os.path import join, abspath
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return join(sys._MEIPASS, relative_path)
return join(abspath("."), relative_path)

spec文件中添加以下代码:

a.datas += [ ('back.png', 'icon/back.png', 'DATA')]

其中 'back.png' 是我的图像路径,将保存在 pyinstaller exe 包中,'icon/back.png' 是我将图像文件放入打包前当前的 icon 文件夹。

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['main.py'],
pathex=['C:\\Users\\User\\Documents\\GitHub\\Mypath'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=['mkl','whl'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)

a.datas += [ ('back.png', 'icon/back.png', 'DATA')]
a.datas += [ ('main.ico', 'icon/main.ico', 'DATA')]
a.datas += [ ('folder.png', 'icon/folder.png', 'DATA')]
a.datas += [ ('download.png', 'icon/download.png', 'DATA')]

pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True , icon='icon\\main.ico')

然后你可以像 resource_path('download.png')

那样调用你的图像

关于python - 如何在 PyQt5 中使用 PyInstaller --onefile 选项和 resource_path 通过样式表添加图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58487122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com