py2exe和QSplashScreen

时间:2011-07-06 13:30:48

标签: python pyqt4 py2exe

我想将QSplashScreen添加到PyQT4应用程序。它在Python中运行良好, 但是当我使用py2exe创建exe时,启动图像是不可见的,应用程序等待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',
                  ],
     )

2 个答案:

答案 0 :(得分:2)

默认情况下支持PNG,JPEG支持是通过插件进行的,需要以某种方式包含。

最近在PySide邮件列表上有一个关于cx_freeze这类事情的帖子,从http://lists.pyside.org/pipermail/pyside/2010-December/001656.html开始。对于PyQt4和py2exe,解决方案大致相同。

final solution基本上就是这样:

在生成的.exe文件旁边,将qt.conf放入其中:

[Paths]
Plugins = plugins

(您可以使用“plugins”以外的值,更改子目录名称以匹配。)

创建一个子目录plugins,并在其中创建另一个子目录imageformats。在此处复制qjpeg4.dll。它将位于C:\Python27\Lib\site-packages\PyQt4\plugins\imageformats之类的路径中。

答案 1 :(得分:1)

可能你需要QT的qjpeg4.dll。尝试复制以下文件夹:

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

进入包含py2exe创建的exe的文件夹。

如果您从Riverbank站点的PyQt4二进制安装文件安装,那就是它的位置。如果您有不同的安装设置,请搜索。