Добавление файла .qss в пакет pyinstaller - PullRequest
0 голосов
/ 03 января 2019

У меня есть простое приложение, в котором я пытаюсь объединить его в исполняемый файл. У меня возникают проблемы, когда я добавляю путь к моей таблице стилей .qss в файл .spec, но это вызывает ошибку, когда я пытаюсь запустить exe из каталога bin. Я получаю ошибку:

 Exception:[Errno 2] No such file or directory: 'FrontEnd\\Styles\\App.qss'

Это запустится, если я помещу исполняемый файл в базовую директорию проекта, но не куда-либо еще, хотя я использую флаг --onefile. У меня есть другие файлы, которые я положил в файл .spec, и они правильно подобраны. Но это похоже на проблему с .qss.

Jernel.spec

# -*- mode: python -*-

block_cipher = None

app_resources = [("FrontEnd/Styles/App.qss", "FrontEnd/Styles/"),
        ("Assets/Icons/*.png", "Assets/Icons/")]

a = Analysis(['Jernel.py'],
         pathex= 
        ['C:\\Users\\Fidel\\Dropbox\\Create\\CProjects\\MyProjects\\Jernel'],
         binaries=[],
         datas=app_resources,
         hiddenimports=[],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=block_cipher,
         noarchive=False)
 pyz = PYZ(a.pure, a.zipped_data,
         cipher=block_cipher)
 exe = EXE(pyz,
      a.scripts,
      a.binaries,
      a.zipfiles,
      a.datas,
      [],
      name='Jernel',
      debug=False,
      bootloader_ignore_signals=False,
      strip=False,
      upx=True,
      runtime_tmpdir=None,
      console=True,
     icon='C:\\Users\\Fidel\\Dropbox\\Create\\CProjects\\MyProjects\\Jernel\\Assets\\Icons\\Windows\\AppIcon.ico')

Jernel.py

import sys
import ctypes
import pathlib
from FrontEnd import QMainWindow, QApplication, Qt, QDockWidget, 
QGridLayout, QDockWidget, QIcon, QSize, QLabel
from BackEnd import Navigator

class Jernel(QMainWindow):
    def __init__(self, parent = None):
        super().__init__(parent)
        self.stack = Navigator()
        self.setWindowFeatures()
        self.setWindowContent()
        self.setAppIcons()
        self.setMenuBar()
        self.show()

    def setWindowFeatures(self):
        self.setGeometry(1280, 1280, 1280, 1280)
        self.setWindowFlags(Qt.FramelessWindowHint)


    def setAppIcons(self):
         print("Adding Icons")
         appIcon = QIcon()
         sizes = [512, 256, 48, 32, 24, 16]
         for size in sizes:
             appIcon.addFile(str(pathlib.Path("Assets/Icons/AppIcon.png")), 
                             QSize(size, size))
         self.setWindowIcon(appIcon)
         print("Finished")

    def setMenuBar(self):
         self.menuDock = QDockWidget()

    def setWindowContent(self):
        self.setCentralWidget(self.stack)

 if __name__ == '__main__':
     try:
     jernelApp = QApplication(sys.argv)
     jernelApp.setApplicationName("Jernel")
     jernelApp.setApplicationDisplayName("Jernel")
     jernelApp.setApplicationVersion("1.0.0")
     if sys.platform == "win32":
          jernelAppID = "FiddyTT.GuiApp.1.0.0"

  ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(jernelAppID)
    window = Jernel()
    with open(str(pathlib.Path("FrontEnd/Styles/App.qss")), "r") as stylesSheet:
         window.setStyleSheet(stylesSheet.read())
    jernelApp.exec_()
    except Exception as exe:
        print("Exception:{}".format(exe))
    finally:
        check = input()

Значки не вызывают исключение, когда загружаются только таблицы sytleSheet. Заранее благодарю за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...