Как добавить значок с помощью таблицы стилей с помощью параметра PyInstaller --onefile с помощью resource_path в PyQt5? - PullRequest
0 голосов
/ 21 октября 2019

Итак, в основном я хочу добавить стрелку вниз в комбинированный список с помощью таблицы стилей (QSS), чтобы я мог связать py.file с параметром --onefile с помощью PyInstaller: код такой, но, похоже, он неработа:

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

, а метод resource_path:

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)

1 Ответ

0 голосов
/ 22 октября 2019

Я использовал следующий код, и он работал отлично.

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 file:

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')

...