我想将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',
],
)
答案 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二进制安装文件安装,那就是它的位置。如果您有不同的安装设置,请搜索。