PyQt4 problema con jpeg cuando se compila
-
18-09-2019 - |
Pregunta
En un programa PyQt4, tengo un QLabel mostrar una imagen con el siguiente código:
en el código de inicio:
Image=QImage(som_path_from_a_fileDialog)
en el método de cambio de tamaño:
pixmap = QPixmap.fromImage(Image)
pixmap = pixmap.scaled(self.display.size())
self.display.setPixmap(pixmap)
Cuando ejecuto mi script en Python, que funciona bien, y puedo mostrar .bmp y JPEG. Si puedo compilar usando py2exe sin embargo, sólo voy a ser capaz de mostrar archivos .bmp. Pantalla de archivos JPEG fallará con:
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPixmap::scaled: Pixmap is a null pixmap
EDIT: Es un duplicado de esta pregunta
Solución
Soporte para muchos formatos de imagen en las versiones recientes de PyQt4 disponibles a través de plugins. Estos complementos se podían encontrar en su directorio C:\PythonXY\Lib\site-packages\PyQt4\plugins\imageformats
. Debería copiar el directorio imageformats
al directorio con el archivo EXE. Tenga en cuenta que es necesario tener imageformats
directorio de la derecha a lo largo del su pyapp.exe. O se debería poner en el mismo directorio donde se encuentra su pyapp.exe qt.conf especial donde se puede especificar la ruta a las extensiones de imágenes, por ejemplo.
[Paths]
Plugins = Library\plugins
Aquí está el ejemplo de código para copiar el plugin sqlite (que no es para imágenes, pero se entiende la idea) cuando construí mi 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"],
)