PyQt应用:用py2exe编译后GIF文件不显示

2 投票
3 回答
1069 浏览
提问于 2025-04-16 10:56

我在我的系统上(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 个回答

0

如果有人遇到这种情况,我找到了一个解决办法。下面是使用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'
                ])],
)
0

在编程中,有时候我们需要处理一些数据,这些数据可能是从用户那里输入的,或者是从其他地方获取的。为了让程序能够理解这些数据,我们通常需要把它们转换成程序能处理的格式。

比如说,如果用户输入了一个数字,我们可能需要把这个数字从文本形式转换成真正的数字类型,这样程序才能进行数学运算。这个过程就叫做“类型转换”。

另外,有些时候我们还需要把程序内部的数据转换成用户能看懂的格式,比如把程序计算的结果显示成文本,这样用户才能明白程序的输出。

总之,类型转换就是让数据在不同的形式之间转换,以便程序能够正确处理和显示这些数据。

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)
2

我不太明白你是怎么用py2exe把PyQt编译成功的;我自己试过,但没成功,所以我换用了pyinstaller
py2exe和PyQt配合得不好,编译的时候总是因为用到的控件不同而不愿意工作。

我建议你换用pyinstaller来编译PyQt,看看它能否满足你的需求。

撰写回答