Скомпилированный код не загружает изображение, используя qrc в pyqt4 - PullRequest
0 голосов
/ 01 июня 2011

Я создал программу, используя pyqt4 в качестве графического интерфейса. Я использовал файл ресурсов или .qrc для загрузки фонового изображения.Моя проблема, когда я скомпилировал его с помощью py2exe, фоновое изображение не загружается.

вот пример кода.

МОДУЛЬ GUI:

from PyQt4 import QtCore, QtGui
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(563, 319)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setStyleSheet(_fromUtf8("background-image: url(:/test/mr_bean_kid.jpg);"))
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 563, 18))
        self.menubar.setObjectName(_fromUtf8("menubar"))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName(_fromUtf8("statusbar"))
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))

import ss_rc

ОСНОВНОЙ МОДУЛЬ:

from sample import Ui_MainWindow
from PyQt4 import QtCore, QtGui


class test(QtGui.QMainWindow):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    myapp = test()
    myapp.show()
    sys.exit(app.exec_())

Я не буду включать qrc, потому что это долго.ТНХ.

Ответы [ 3 ]

1 голос
/ 13 июля 2011

Решение вашей проблемы можно найти внизу этой страницы.

http://www.py2exe.org/index.cgi/Py2exeAndPyQt

Испытывая это решение, убедитесь, что вы не объединяете все файлы в один исполняемый файл, который не будет работать ...

1 голос
/ 01 июня 2011

Это Python QRC?

У меня есть Makefile для моего приложения, который динамически повторно генерирует код из файлов .ui и файла .qrc:

Makefile

all:
    rm -fv *.pyc
    pyuic4 -i 2 -o gui.py gui.ui
    pyrcc4 -o resources_rc.py resources.qrc
    python2 main.py

В Qt Designer вы указываете файл ресурсов. Для меня это было resources.rc. Но Python меняет это значение . на подчеркивание, поэтому вам нужно создать файл resources_rc с расширением .py.

0 голосов
/ 07 мая 2014

Я столкнулся с той же проблемой сегодня. Проблема в том, что py2exe не распознает изображение в формате «jpg». Ваше фоновое изображение должно быть "png" файлом. Вы можете просто изменить это, изменив, например, формат вашего изображения с помощью краски, а затем добавить это изображение в ваш «resourcefilename.qrc». Тогда вы перекомпилируете это. Не забудьте изменить ссылку в вашем коде Python с:

QtGui.QDialog.setStyleSheet(_fromUtf8("QDialog{background-image: url(:/image/**'imagename'.jpg**);}"))

до

QtGui.QDialog.setStyleSheet(_fromUtf8("QDialog{background-image: url(:/image/**'imagename'.png**);}"))

Тогда вам просто нужно перекомпилировать код с py2exe, и теперь у вас должен быть фон.

...