我有一个PySide应用程序,其中包含MainWindow
(QMainWindow
个实例)的图标。当我正常运行文件时,图标是可见的,一切都很好但是当我用py2exe
创建一个exe时,图标不会出现。 cx_freeze
也会发生这种情况(所以我不认为py2exe
存在问题)。
应用程序是使用QtDesigner
设计的,并使用pyside-uic
转换为python。我尝试使用图标作为文件和资源(qrc文件),两者似乎都不起作用。
任何帮助或指示都将不胜感激。
感谢。
答案 0 :(得分:4)
我仍然希望捆绑其他所有内容,因此我排除了qt dll并手动添加它们。我的setup.py看起来像这样:
from os.path import join
_PYSIDEDIR = r'C:\Python27\Lib\site-packages\PySide'
data_files =[('imageformats',[join(_PYSIDEDIR,'plugins\imageformats\qico4.dll')]),
('.',[join(_PYSIDEDIR,'shiboken-python2.7.dll'),
join(_PYSIDEDIR,'QtCore4.dll'),
join(_PYSIDEDIR,'QtGui4.dll')])
]
setup(
data_files=data_files,
options={
"py2exe":{
"dll_excludes":['shiboken-python2.7.dll','QtCore4.dll','QtGui4.dll'],
"bundle_files": 2
...
}
}
...
)
如果您的项目使用其他Qt dll,则必须排除并手动添加它们。如果你需要加载.ico图像以外的东西,你还需要添加正确的插件。
答案 1 :(得分:2)
我假设它适用于bmp,但不是png / jpg?如果是这样,图像格式插件可能无法正确加载。
我想在已安装的应用程序目录中设置一个qt.conf文件,并确保plugin-dll转到/ plugins / imageformats /会使事情更好。
答案 2 :(得分:2)
我遇到了同样的问题。经过一番调查,我找到了解决方案: (麦克有正确的想法)
cx_freeze
不会复制包含PyQt
图片阅读器的ico
插件目录。
以下是步骤:
setup.py
中将PyQt4
插件目录复制到您的发行版application_path = os.path.split(os.path.abspath(sys.argv[0]))[0] try: if sys.frozen: plugin_path = os.path.join(application_path, "qtplugins") app.addLibraryPath(plugin_path) except AttributeError: pass
答案 3 :(得分:1)
它可能与Windows 7的任务栏图标处理有关吗?
答案 4 :(得分:0)
您必须在发布文件夹中手动添加“qico4.dll”。将其插入setup.py:
import sys
from os.path import join, dirname
from cx_Freeze import setup, Executable
_ICO_DLL = join(dirname(sys.executable),
'Lib', 'site-packages',
'PySide', 'plugins',
'imageformats', 'qico4.dll')
build_exe = {
'include_files': [(
_ICO_DLL,
join('imageformats', 'qico4.dll'))]}
setup(name = "xxxxx",
version = "1.0.0",
...
options = { ...
'build_exe': build_exe
...},
...)