程序显示png文件,但不显示jpg文件。
我的程序截图,使用png / jpg文件:
png http://i.stack.imgur.com/xw4vQ.png
jpg http://i.stack.imgur.com/R5T9q.png
如果没有用py2exe编译,程序正常工作并显示所有格式。
所以我认为这是py2exe的问题。
我在这两种情况下都有这个代码:
(pic
为QLabel
,picLine
为Layout
}
px = QtGui.QPixmap(pic_src)
pic.setPixmap(px)
picLine.addWidget(pic)
尝试px.isNull()
- 返回True
所以px
在某种程度上是空的
python文件的负责人:
# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
import os, pyaudio, wave
setup.py:
from distutils.core import setup
import py2exe
setup(
name="name",
version="1",
author="Columpio",
windows=[{"script": "name.py",
"icon_resources": [(0, "icon.ico")]}],
data_files=[<here long list of files goes>],
options={"py2exe": {"includes": ["os", "sip", "sys", "PyQt4", "pyaudio",
"wave"],
"optimize": 2,
"bundle_files": 2
}
},
zipfile=None
)
抱歉可怕的问题风格 - 我现在病得很厉害。
答案 0 :(得分:0)
可以肯定的是,这里的问题是Python解释器中的PyQt代码可以看到QT图像格式插件,但py2exe构建的可执行文件不能。这些插件位于Python site-packages目录中的目录plugins
中。
这很容易解决:最简单的方法就是将imageformats
目录复制到与可执行文件相同的目录中。
我在setup.py中使用此代码但这适用于PySide。我认为PyQt4或多或少相同:用PyQt4代替PySide:
ifpath = os.path.join(sys.prefix,"Lib","site-packages","PySide","plugins","imageformats")
distutils.dir_util.copy_tree(ifpath,dist_dir)