@IstDanya

Как добавить изображения в python.exe?

Хочу сделать банальную презентацию на пайтон, чтобы с помощью формы можно было листать картинки(как будто слайды листаешь). Все сделано, код рабочий, но когда компилирую python.exe у меня в нем нет картинок, а я хочу чтобы всё было в одном файле python.exe, т.е. чтобы я другану скинул один файл .exe и у него всё работало.
Картинки в коде представлены в виде списка(list), куда я вогнал все картинки прописав им путь, они переключаются с помощью кнопок, задача которых просто проходить по индексу в массиве.
Так вот я хочу все картинки были в одном .exe файле
Код прилагаю:

# окно главной формы
# !pyuic5 mainform.ui -o mainform.py 
# !pyuic5 one_slide.ui -o one_slide.py 


#%%
import sys, os
# from PyQt5.QtMultimediaWidgets import QVideoWidget
from PyQt5.QtWidgets import QApplication, QMainWindow
from mainform import Ui_MainWindow
from PyQt5 import QtGui
from PyQt5 import QtWidgets, QtCore


import one_slide

#%%

class Calculator(QMainWindow):
   def __init__(self):
        super(Calculator, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        
        self.a=One(self)
        self.ui.btnSpin.clicked.connect(self.a.b1)


elem = 0

class One(QMainWindow ,one_slide.Ui_MainWindow):   


    def __init__(self, parent=Calculator):
        super().__init__(parent)
        self.setupUi(self)
        # pal = self.palette()
        # pal.setBrush( QtGui.QPalette.Normal, QtGui.QPalette.Window, QtGui.QBrush(QtGui.QPixmap("2. Image/0.png")))
        # self.setPalette(pal)
       
       

        global mas_image 
        mas_image = ["0.png", "1.png","2. Image/2.png","2. Image/3.png","2. Image/5.png",
                      "2. Image/6.png", "2. Image/7.png","2. Image/8.png","2. Image/9.png","2. Image/10.png",
                      "2. Image/11.png", "2. Image/12.png","2. Image/13.png","2. Image/14.png","2. Image/15.png",
                      "2. Image/16.png", "2. Image/17.png","2. Image/18.png","2. Image/19.png","2. Image/20.png",
                      "2. Image/21.png", "2. Image/22.png","2. Image/23.png","2. Image/24.png","2. Image/25.png",
                      "2. Image/26.png", "2. Image/27.png","2. Image/2.png","2. Image/28.png","2. Image/29.png",
                      "2. Image/30.png", "2. Image/31.png","2. Image/32.png","2. Image/33.png","2. Image/34.png",
                      "2. Image/35.png","2. Image/36.png","2. Image/37.png"]
        self.btn_0.clicked.connect(self.dal)
        self.btn_1.clicked.connect(self.exit)
        self.pushButton_3.clicked.connect(self.brea)

    
  
       
    def dal(self):
        global elem
        elem +=1
        if elem > 36:
            elem = 37
            self.label.setPixmap(QtGui.QPixmap(mas_image[37]))
        else:
            self.label.setPixmap(QtGui.QPixmap(mas_image[elem]))
        print(elem)
        
    
    
    
    def brea(self):
        global elem
        elem -= 1
        if elem < 0:
            elem = 0
            self.label.setPixmap(QtGui.QPixmap(mas_image[0]))
            
            # elem = len(mas_image)-1
        else:
            self.label.setPixmap(QtGui.QPixmap(mas_image[elem]))
        print(elem)

    def exit(self):
        global elem
        elem = 0
        self.label.setPixmap(QtGui.QPixmap(mas_image[elem]))
        print(elem)
        
    
    def b1(self):
        self.showMaximized()
    


   
        
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    
    window = Calculator()
    window.showMaximized()
    window.show()
    
    sys.exit(app.exec())
# %%
  • Вопрос задан
  • 1867 просмотров
Решения вопроса 1
@xaiponews
К сожалению, напрямую вставлять изображения в исполняемый файл Python нельзя. Однако вы можете поместить изображения в отдельную папку и упаковать их вместе с исполняемым файлом с помощью таких инструментов, как PyInstaller или PyOxidizer.

Вот как вы можете использовать PyInstaller для упаковки кода Python вместе с изображениями:

1. Установите PyInstaller: вы можете установить PyInstaller с помощью pip, который является менеджером пакетов Python. Откройте терминал и введите следующую команду: pip install pyinstaller
2. Организуйте свой код: убедитесь, что весь ваш код Python и файлы изображений находятся в одном каталоге.
3. Создайте файл спецификации: PyInstaller требует файл спецификации, чтобы указать параметры для создания исполняемого файла. Откройте терминал и перейдите в каталог кода, затем введите следующую команду, чтобы создать файл спецификации:
pyinstaller --name myprogram --add-data "path/to/images/*;." myprogram.py

Это создаст файл спецификации с именем myprogram.spec. Опция --name указывает имя исполняемого файла, который будет создан. Параметр --add-data указывает путь к изображениям и указывает PyInstaller включить их в исполняемый файл.
4.Соберите исполняемый файл. Получив спецификационный файл, вы можете использовать его для сборки исполняемого файла. Введите в терминал следующую команду: pyinstaller myprogram.spec
Это создаст distкаталог, содержащий исполняемый файл и все необходимые файлы для его запуска, включая изображения.
5.Распространите исполняемый файл: теперь вы можете передать исполняемый файл своему другу, и он сможет запустить его на своем компьютере без необходимости установки Python или каких-либо дополнительных библиотек.

Обратите внимание, что результирующий исполняемый файл все равно будет довольно большим, поскольку он содержит изображения. Если у вас много больших изображений, может быть лучше хранить их вне исполняемого файла и динамически загружать во время выполнения.

И еще:
После установки PyInstaller вы можете использовать его для создания одного исполняемого файла из вашего скрипта Python, включая все его зависимости. Чтобы включить изображения в исполняемый файл, вам нужно указать их как файлы данных в команде PyInstaller.

Вот пример команды для создания одного исполняемого файла для вашего скрипта с помощью PyInstaller, включая изображения:
pyinstaller --onefile --windowed --add-data "2. Image/*.png:2. Image" your_script_name.py


Эта команда создаст один исполняемый файл с именем your_script_name.exe, который включает все необходимые зависимости и образы Python. Параметр --onefile сообщает PyInstaller, что нужно объединить все в один исполняемый файл, а --add-data параметр указывает расположение файлов изображений и способ их включения в исполняемый файл. Опция --windowed удаляет окно консоли и создает исполняемый файл только с графическим интерфейсом. Вам нужно будет заменить «your_script_name.py» на фактическое имя вашего скрипта Python.

После запуска команды PyInstaller вы должны найти единственный исполняемый файл в dist каталоге. Вы можете отправить этот файл своему другу, и он сможет без проблем запустить его.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы