题
在一个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"],
)
不隶属于 StackOverflow