在PyQt4中的Exe窗口图标

时间:2010-02-22 16:11:53

标签: python windows qt qt4 py2exe

我在PyQt4中有一个小程序,我想将程序编译成Exe。我正在使用py2exe来做到这一点。我可以使用以下代码在Windows标题栏中成功设置图标,但是当我将其编译为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 :(得分: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"]}})

答案 1 :(得分:4)

我认为您需要直接从使用.ico创建的EXE或DLL引用py2exe文件。您似乎有正确的setup.py脚本,因此请查看:http://www.py2exe.org/index.cgi/CustomIcons。有一个wxWidgets的例子,但你可以尝试将它改编为Qt。

答案 2 :(得分:0)

我建议您创建一个名为YourApp.rc的文件,添加以下行:

IDI_ICON1   ICON    DISCARDABLE "res/icons/app_icon.ico"

然后在.PRO文件中,添加以下行:

win32{
RC_FILE = YourApp.rc
}

应该解决你的问题!

答案 3 :(得分:0)

我有同样的问题。出于某种原因,使用image.png文件&不是image.ico文件。不知道为什么。但是我把ico转换成了png&它起作用了