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

¿Fue útil?

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"],
     )
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top