在一个PyQt4的程序中,我有一个QLabel显示用下面的代码的图像:

在init代码:

Image=QImage(som_path_from_a_fileDialog)

在调整大小的方法,包括:

pixmap = QPixmap.fromImage(Image)
pixmap = pixmap.scaled(self.display.size())
self.display.setPixmap(pixmap)

当我使用python执行我的脚本,它工作正常,我可以显示的.bmp和JPEG文件。 如果我用然而编译py2exe它,我只能显示.bmp文件。 JPEG文件显示将失败,:

QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPixmap::scaled: Pixmap is a null pixmap

编辑: 这是这个问题

有帮助吗?

解决方案

在经由插件可用的最新版本的PyQt4的许多图像格式支持。这些插件可以在你的C:\PythonXY\Lib\site-packages\PyQt4\plugins\imageformats目录中找到。你应该imageformats目录复制到你的exe文件的目录。请注意,你需要有imageformats目录沿您pyapp.exe权利。或者,你应该把在其中您pyapp.exe位于特殊qt.conf在那里你可以指定图像的插件的路径相同的目录,e.g。

[Paths]
Plugins = Library\plugins

下面是例子的代码复制sqlite的插件(它不适合图像,但你的想法),当我建我的exe文件:

from distutils.core import setup
import py2exe
import os, sys
import PyQt4

setup(options = {"py2exe": {"includes": ["sip"]}},
     data_files=[('sqldrivers', [os.path.join(os.path.dirname(PyQt4.__file__), 
                                              'plugins', 
                                              'sqldrivers', 
                                              'qsqlite4.dll')])],
     windows = ["myapp.py"],
     )
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top