Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编译后的代码不使用pyqt4中的qrc加载图像_Python_Pyqt4_Py2exe - Fatal编程技术网

Python 编译后的代码不使用pyqt4中的qrc加载图像

Python 编译后的代码不使用pyqt4中的qrc加载图像,python,pyqt4,py2exe,Python,Pyqt4,Py2exe,我使用pyqt4作为GUI创建了一个程序,我使用资源文件或.qrc加载背景图像。 我的问题是,当我使用py2exe编译它时,背景图像没有加载 下面是示例代码 GUI模块: from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: _fromUtf8 = lambda s: s class Ui_MainWindow(object): de

我使用pyqt4作为GUI创建了一个程序,我使用资源文件或.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,因为它太长了。 thx.

是Python QRC吗

我的应用程序有一个Makefile,它从
.ui
文件和
.qrc
文件动态地重新生成代码:

生成文件

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

在Qt设计器中,指定资源文件。对我来说,这是
resources.rc
。但是Python将
更改为下划线,因此您必须创建一个扩展名为
.py
resources\u rc
文件


尝试此解决方案时,请确保没有将所有文件捆绑到单个可执行文件中,否则将无法运行…

我今天遇到了相同的问题。问题很简单,py2exe无法识别“jpg”格式的图像。您的背景图像必须是“png”文件。例如,您可以通过使用paint修改yout图像的格式,然后将此图像添加到“resourcefilename.qrc”中,从而简单地改变这种情况。然后重新编译它。不要忘记更改python代码中的链接:

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


然后,您只需使用py2exe重新编译代码,现在就可以拥有您的背景了。

thx用于回复混合器。是的,是python QRC。当我在源代码中运行它时,它工作得很好。它会加载映像,但当我使用py2exe将其编译为.exe并运行它时,映像看起来并不是很好。我一直在使用
py2exe
时遇到问题。总是。您是否尝试过冷冻?我自己构建PyQt4应用程序,并且它总是很好地打包它们。我现在正在尝试cx_freeze并进行处理,但仍然出现同样的问题。编译后没有图像。我创建了一个setup.py安装程序(name=“hello”,version=“0.1”,description=“典型的‘hello,world!’脚本”,executables=[Executable(“main.py”)]),就像在docs示例中一样,并在命令提示符下作为setup.py build运行它
QtGui.QDialog.setStyleSheet(_fromUtf8("QDialog{background-image: url(:/image/**'imagename'.png**);}"))