PyQt应用:用py2exe编译后GIF文件不显示
我在我的系统上(Windows XP 32位,Python 2.6)发现,PyQt在Python解释器中可以完美显示GIF动画,但当我通过py2exe运行时,它们就不显示了。
我尝试了很多在网上找到的方法:把GIF相关的DLL文件从PyQt复制到一个叫imageformats的文件夹里,按照另一个StackOverflow帖子建议的那样设置qt.conf,调整了库路径到那些图像格式的DLL所在的地方,还复制了一个设置文件,链接地址是http://wiki.wxpython.org/py2exe-python26。
但是没有一个方法有效——我到底做错了什么呢?
3 个回答
如果有人遇到这种情况,我找到了一个解决办法。下面是使用py2exe编译时,让你的图片文件能够显示的步骤:
- 所有的图片文件(gif、png、jpg)都需要复制到dist文件夹里。
- Qt的dll文件需要从Qt的安装文件夹复制到dist\imageformats文件夹。
对于dll文件,你需要在你的setup.py文件中设置以下内容:
windows = [{
"script":"yourPythonScript.py",
"icon_resources": [(1, "nameOfIcoFile.ico")],
"dest_base":"nameOfExeFile"
}],
data_files = [
('imageformats',
[r'C:\Python27\Lib\site-packages\PyQt4\plugins\imageformats\qico4.dll',
r'C:\Python27\Lib\site-packages\PyQt4\plugins\imageformats\qgif4.dll'
])],
)
在编程中,有时候我们需要处理一些数据,这些数据可能是从用户那里输入的,或者是从其他地方获取的。为了让程序能够理解这些数据,我们通常需要把它们转换成程序能处理的格式。
比如说,如果用户输入了一个数字,我们可能需要把这个数字从文本形式转换成真正的数字类型,这样程序才能进行数学运算。这个过程就叫做“类型转换”。
另外,有些时候我们还需要把程序内部的数据转换成用户能看懂的格式,比如把程序计算的结果显示成文本,这样用户才能明白程序的输出。
总之,类型转换就是让数据在不同的形式之间转换,以便程序能够正确处理和显示这些数据。
from distutils.core import setup
import py2exe
DATA=[('imageformats',['C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qjpeg4.dll',
'C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qgif4.dll',
'C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qico4.dll',
'C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qmng4.dll',
'C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qsvg4.dll',
'C:\\Python26/Lib/site-packages/PyQt4/plugins/imageformats/qtiff4.dll'
])]
setup(windows=[{"script":"your_python_script.py"}],
data_files = DATA,
options={"py2exe":{
"includes":["sip", "PyQt4.QtNetwork", "PyQt4.QtWebKit", "PyQt4.QtSvg" ],
"bundle_files":3,
"compressed":True,
"xref":True}},
zipfile=None)
我不太明白你是怎么用py2exe把PyQt编译成功的;我自己试过,但没成功,所以我换用了pyinstaller。
py2exe和PyQt配合得不好,编译的时候总是因为用到的控件不同而不愿意工作。
我建议你换用pyinstaller来编译PyQt,看看它能否满足你的需求。