Значки, отсутствующие в приложении PyQt5 после компиляции в .exe с помощью pyinstaller - PullRequest
0 голосов
/ 04 октября 2018

решено - Решение опубликовано как ответ, спасибо всем за помощь.

После компиляции моего приложения на python с использованием PyQt5 в исполняемый файл значки, содержащиеся в моем графическом интерфейсе, удаляются/ не отображается.В частности, QIcon экземпляры добавлены в мой Window(QMainWindow) класс с использованием self.setWindowIcon(QtGui.QIcon(fpath)) и QPixmap(f2path), встроенных в QLabel через label.setPixmap(myPixmap).

Я пытался найти на этом форуме возможные решения, ноне могу найти тему для решения проблем.Я попытался установить абсолютный путь к файлу, как рекомендовано здесь Объединение файлов данных с помощью PyInstaller (--onefile) и здесь Отсутствующие значки кнопок в pyinstaller

Не знаю, гдечтобы начать изучение проблем, при компиляции с pyinstaller ошибок нет, и он отлично работает как скрипт python.

pyinstaller -w -F MY_GUI.py

Заранее спасибо!



Пример:

import sys
import os

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

import sys
import resource_path # code taken from links above
from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QMainWindow

class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.title = "MyProg"
        self.top = 400
        self.left = 400
        self.width = 680
        self.height = 540
        icon_path = resource_path("icon.png")
        self.setWindowIcon(QtGui.QIcon(icon_path))

        self.InitUI()

    def InitUI(self):
        self.setWindowTitle(self.title) 
        self.setGeometry(self.top, self.left, self.width, self.height) 
        self.show()

App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())

1 Ответ

0 голосов
/ 06 октября 2018

Решением было специально добавить файлы изображений в файл .spec, а затем сгенерировать файл .exe, используя

$> pyinstaller myGUI.spec

Вот соответствующая часть файла .spec:

a = Analysis(['myGUI.py'],
     ...,
     datas = [('myIcon.png', '.')],
     ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...