При использовании замечательной питоновской библиотеки PyQT для компиляции ресурсов (например файлов изображений) в код модуля применяется утилита, поставляемая вместе с библиотекой. Находится она в папке bin (а иногда в корне библиотеки) и называется pyrcc4.
В нашем случае давайте скомпилируем в ресурс файл изображения Qt-logo.png. Для этого выполним несколько несложных действий.
Создадим файл например res.qrc формата XML, описывающий ресурсы
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>Qt-logo.png</file>
</qresource>
</RCC>
Затем, нашей утилитой pyrcc4.exe (для Windows) сгенерим питоновский скрипт, содержащий наше изображение, например так:
pyrcc4 -o путь_до_файла\rc.py -py2 путь_до_файла\res.qrc
Осталось лишь экспортировать код в виде модуля и использовать в наших скриптах, например как показано ниже.
from PyQt4 import QtCore, QtGui
import sys
import rc
app = QtGui.QApplication(sys.argv)
window = QtGui.QWidget()
window.setWindowTitle("Simple app with resource")
window.resize(150, 100)
image = QtGui.QPixmap(":/Qt-logo.png")
label = QtGui.QLabel()
label.setAlignment(QtCore.Qt.AlignCenter)
label.setPixmap(image)
button = QtGui.QPushButton("&Close")
vbox = QtGui.QVBoxLayout()
vbox.addWidget(label)
vbox.addWidget(button)
window.setLayout(vbox)
QtCore.QObject.connect(
button,
QtCore.SIGNAL("clicked()"),
QtGui.qApp,
QtCore.SLOT("quit()")
)
window.show()
sys.exit(app.exec_())
Следует отметить, что размер файла ресурса значительно больше размера исходного изображения. Для уменьшения объема можно использовать компрессию.
Спасибо Вам! большое! Сколько не искал, ну никто, не удосужился написать примеры. Просто брали и тыкали в документацию в которой тоже ничего подобного не нашел. А тут бац, все просто, в одном месте, ничего лишнего.
.txt to .bat и готово.
Рад помочь
Черта с два так заработает!
В приведенном выше коде из rc ничего не подцепляется и label.Pixmap - будет прозрачным.
Сейчас перепроверил. У меня всё прекрасно работает. Давайте попробуем посмотреть на окружение: должно быть Windows, PyQt4 (хотя, думаю, и на других ОС и Qt5 тоже будет работать). Файл изображения должен называться одинаково во всех файлах (main.py, res.qrc) и попробуйте его для начала расположить там же, где исполняемый модуль.
К окружению: Python 2
Подскажите, а кроме картинок что можно упаковать? Можно текстовый файл, а потом читать его оттуда?
Любые файлы можно упаковывать.
Отправить комментарий