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

Foi útil?

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"],
     )
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top