py2exe и QSplashScreen

Я хочу добавить QSplashScreen в приложение PyQT4. Он отлично работает с Python, но когда я создаю exe с помощью py2exe, заставка невидима, приложение ждет 2 секунды и показывает главное окно. Что случилось?

Код приложения:

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)

    # Create and display the splash screen
    splash_pix = QPixmap('images/splash.jpg')
    splash = QSplashScreen(splash_pix, QtCore.Qt.WindowStaysOnTopHint)
    splash.setMask(splash_pix.mask())
    splash.show()
    app.processEvents()

    time.sleep(2)

    myapp = Main()
    myapp.show()
    splash.finish(myapp)
    sys.exit(app.exec_())

setup.py:

#!/usr/bin/env python

from py2exe.build_exe import py2exe
from distutils.core import setup

setup(name='-',
      version='1.0',
      description='-',
      author='-',
      author_email='-',
      windows=[{"script": "main.py"}],
      data_files=[
                ('phonon_backend', [
                    'C:\Python26\Lib\site-packages\PyQt4\plugins\phonon_backend\phonon_ds94.dll'
                    ]),
                  'settings.yaml',
                  ('images', ['images/accept.png',
                              'images/splash.jpg',

                              ]),
                  'loader.png',
                  'licence.txt',
                  'about.txt',
                  ],
     )

person Alex    schedule 06.07.2011    source источник
comment
Каково ожидаемое поведение? Создает ли исполняемый файл файл журнала, когда он запускается с ошибками и трассировкой стека, или он молча терпит неудачу? Реализовано ли у вас какое-либо ведение журнала, которое могло бы позволить вам увидеть, из какого места он пытается получить доступ к заставке?   -  person thegrinner    schedule 06.07.2011


Ответы (2)


Поддержка PNG предоставляется по умолчанию, поддержка JPEG предоставляется плагином, который необходимо каким-то образом включить.

Недавно в списке рассылки PySide была тема, посвященная подобным вещам с cx_freeze. nofollow">http://lists.pyside.org/pipermail/pyside/2010-December/001656.html. решение будет примерно одинаковым для PyQt4 и py2exe.

окончательное решение было в основном таким:

Рядом с созданным файлом .exe поместите qt.conf с этим:

[Paths]
Plugins = plugins

(Вы можете использовать значение, отличное от «plugins», измените имя подкаталога, чтобы оно соответствовало.)

Создайте подкаталог plugins и в нем еще один подкаталог imageformats. Скопируйте qjpeg4.dll сюда. Это будет путь вроде C:\Python27\Lib\site-packages\PyQt4\plugins\imageformats.

person Chris Morgan    schedule 06.07.2011

Возможно, вам нужна QT qjpeg4.dll. Попробуйте скопировать следующую папку:

<python-dir>\Lib\site-packages\PyQt4\plugins\imageformats

в папку, содержащую исполняемый файл, который создает py2exe.

Вот где он будет, если вы установили из двоичного установочного файла PyQt4 с сайта Riverbank. Если у вас другая установка установки, поищите.

person Gary Hughes    schedule 06.07.2011