Problema pyqt4 com jpeg quando compilado
-
18-09-2019 - |
Pergunta
Em um programa PYQT4, tenho um Qlabel exibindo uma imagem com o seguinte código:
No código init:
Image=QImage(som_path_from_a_fileDialog)
No método de redimensionamento:
pixmap = QPixmap.fromImage(Image)
pixmap = pixmap.scaled(self.display.size())
self.display.setPixmap(pixmap)
Quando executo meu script com o Python, ele funciona bem e posso exibir arquivos .bmp e jpeg. Se eu compilá -lo usando PY2EXE, no entanto, só poderei exibir arquivos .bmp. A exibição do arquivo JPEG falhará com:
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPixmap::scaled: Pixmap is a null pixmap
Editar: é uma duplicata de essa questão
Solução
Suporte para muitos formatos de imagem em versões recentes do PYQT4 disponíveis via plugins. Esses plugins podem ser encontrados em seu C:\PythonXY\Lib\site-packages\PyQt4\plugins\imageformats
diretório. Você deve copiar imageformats
diretório para o diretório com seu exe. Observe que você precisa ter imageformats
diretório ao longo do seu pyapp.exe. Ou você deve colocar o mesmo diretório onde está o seu pyapp.exe localizado qt.conf, onde você pode especificar o caminho para os plugins de imagem, por exemplo,
[Paths]
Plugins = Library\plugins
Aqui está o exemplo do código para copiar o plug -in SQLite (não é para imagens, mas você terá a ideia) quando eu construí meu 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"],
)