MyTetra Share
Делитесь знаниями!
Использование компилятора ресурсов pyrcc4 в PyQt
Время создания: 20.09.2017 16:37
Текстовые метки: code
Раздел: Python - PyQt4 - pyrcc4
Запись: xintrea/mytetra_db_mcold/master/base/1505914645zrwahue8b7/text.html на raw.githubusercontent.com

Использование компилятора ресурсов pyrcc4 в PyQt

При использовании замечательной питоновской библиотеки 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_())

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

Так же в этом разделе:
 
MyTetra Share v.0.58
Яндекс индекс цитирования