py2exe与QSplashScreen
我想在PyQT4应用程序中添加一个启动画面(QSplashScreen)。在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 个回答
1
你可能需要QT的qjpeg4.dll文件。试着把下面这个文件夹复制到:
<python-dir>\Lib\site-packages\PyQt4\plugins\imageformats
这个文件夹里,也就是py2exe生成的exe文件所在的文件夹。
如果你是从Riverbank网站下载的PyQt4安装包安装的,文件应该就在那。如果你用的是其他的安装方式,那就自己找找吧。
2
PNG格式的支持是默认有的,而JPEG格式的支持需要通过一个插件来实现,这个插件需要以某种方式包含进来。
最近在PySide的邮件列表上有个讨论,关于使用cx_freeze的类似问题,具体内容可以查看这个链接: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
下。