Упаковщик / конструктор программы на PyQt5 c большим количеством изображений
Всем привет, пишу проект на PyQt5. Сейчас мне надо распространить его на другие ПК. Я использовал упаковщик pyinstaller, однако он не поддерживает загрузку изображений. Мой проект на данный момент содержит около 30 изображений. Это как значки кнопок, так и графические подсказки для пользователя в формате jpg. Посоветуйте пожалуйста упаковщик, которым можно создать исполняемый файл без потери изображений.
Работаю на Python 3.6, Среда разработки PyCharm.
Ответы (1 шт):
Автор решения: Felix
→ Ссылка
Попробуйте использовать модуль base64 для преобразования изображения в байтовые данные:
# -*- coding: utf-8 -*-
import base64
def pic2str(file, functionName):
pic = open(file, 'rb')
content = '{} = {}\n'.format(functionName, base64.b64encode(pic.read()))
pic.close()
with open('pic2str.py', 'a') as f:
f.write(content)
if __name__ == '__main__':
pic2str('test.png', 'explode')
Эта функция создаст новый файл .py с именем pic2str.py.
Затем импортируйте этот файл:
# -*- coding: utf-8 -*-
import sys
import base64
from io import BytesIO
from PyQt5 import QtWidgets
from PyQt5.QtGui import *
from test import Ui_MainWindow
from PIL import Image, ImageQt
from pic2str import explode
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Load byte data
byte_data = base64.b64decode(explode)
image_data = BytesIO(byte_data)
image = Image.open(image_data)
# PIL to QPixmap
qImage = ImageQt.ImageQt(image)
image = QPixmap.fromImage(qImage)
# QPixmap to QLabel
self.ui.label.setPixmap(image)
self.ui.label.setScaledContents(True)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
window = MainWindow()
window.show()
sys.exit(app.exec_())