PyQT4 проблема с jpeg при компиляции - PullRequest
0 голосов
/ 05 февраля 2010

В программе PyQT4 у меня есть QLabel, отображающий изображение со следующим кодом:

в коде инициализации:

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

РЕДАКТИРОВАТЬ: Это дубликат этого вопроса

1 Ответ

3 голосов
/ 05 февраля 2010

Поддержка многих форматов изображений в последних версиях PyQt4 доступна через плагины. Эти плагины можно найти в вашем каталоге C:\PythonXY\Lib\site-packages\PyQt4\plugins\imageformats. Вы должны скопировать каталог imageformats в каталог с вашим exe. Обратите внимание, что вам нужно иметь директорию imageformats прямо вдоль вашего pyapp.exe. Или вы должны поместить в тот же каталог, где находится ваш pyapp.exe специальный qt.conf, где вы можете указать путь к подключаемым модулям изображений, например,

[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"],
     )
...