10

我在 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

4 回答 4

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"]}})
于 2011-03-24T19:57:43.533 回答
3

我相信您需要.ico直接从您正在创建的 EXE 或 DLL 中引用该文件py2exe。你似乎有 setup.py 脚本正确,所以看看:http://www.py2exe.org/index.cgi/CustomIcons。wxWidgets 有一个示例,但您可以尝试使其适应 Qt。

于 2010-02-22T17:03:07.953 回答
0

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

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

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

win32{
RC_FILE = YourApp.rc
}

它应该可以解决您的问题!

于 2010-02-23T12:49:19.950 回答
0

我遇到过同样的问题。由于某种原因,它适用于 image.png 文件而不是 image.ico 文件。不知道为什么。但我将 ico 转换为 png 并且它有效

于 2017-01-23T21:39:01.637 回答