PyQt4中Exe的窗口图标
我有一个用PyQt4写的小程序,我想把这个程序编译成一个Exe文件。我正在使用py2exe来实现这个目标。我可以成功地在窗口的标题栏上设置图标,使用以下代码,但是当我把它编译成exe文件时,图标就消失了,变成了默认的Windows应用程序图标。以下是我的程序:
import sys
from PyQt4 import QtGui
class Icon(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Icon')
self.setWindowIcon(QtGui.QIcon('c:/python26_/repy26/icons/iqor1.ico'))
app = QtGui.QApplication(sys.argv)
icon = Icon()
icon.show()
sys.exit(app.exec_())
**** 这是用于py2exe的setup.py文件****
from distutils.core import setup
import py2exe
setup(windows=[{"script":"iconqt.py"
,"icon_resources": [(1, "Iqor1.ico")]}]
,options={"py2exe":{"includes":["sip", "PyQt4.QtCore"]}})
4 个回答
0
我建议你创建一个叫做 YourApp.rc 的文件,然后在里面添加以下内容:
IDI_ICON1 ICON DISCARDABLE "res/icons/app_icon.ico"
接着在你的 .PRO 文件中,添加以下内容:
win32{
RC_FILE = YourApp.rc
}
这样应该能解决你的问题!
3
我觉得你需要直接从你用 py2exe
创建的 EXE 或 DLL 文件中引用 .ico
文件。看起来你的 setup.py 脚本写得没问题,所以可以看看这个链接:http://www.py2exe.org/index.cgi/CustomIcons。里面有一个关于 wxWidgets 的例子,但你可以试着把它改成适合 Qt 的。
15
问题是,py2exe没有包含qt图标读取插件。你需要通过data_files参数告诉它要包含这个插件。可以这样做:
setup(windows=[{"script":script_path,
"icon_resources":[(1, icon_path)]}],
data_files = [
('imageformats', [
r'C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats\qico4.dll'
])],
options={"py2exe":{"packages":["gzip"],
"includes":["sip"]}})