python 3.2使用cx_freeze的tkinter图标

时间:2013-08-21 13:50:05

标签: python tkinter icons cx-freeze

我正在使用它,当我启动python脚本

时工作正常
root.wm_iconbitmap('icon.ico')

但在使用cx_freeze编译脚本并尝试执行编译文件后,我收到以下错误消息

File "D:\Programme\Python\Lib\tkinter\__init__.py", line 1553, in wm_iconbitmap
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "icon.ico" not defined

因此无法找到图标文件。 如何配置我的setup.py以包含图标文件?

1 个答案:

答案 0 :(得分:3)

我不知道你是否已经解决了这个问题(考虑到这个问题的年龄),但我和你有完全相同的问题,并且由于你的问题,它实际上解决了我的问题。

为了包含您的图标文件(或您的Python程序所调用的任何其他文件),您需要在setup.py脚本中创建一个名为includefiles的变量,然后在setup(代码中创建一个变量包括options

以下是我用来执行此操作的setup.py脚本。

import sys
from cx_Freeze import setup, Executable

base = None
if (sys.platform == "win32"):
    base = "Win32GUI"

exe = Executable(
        script = "Binary to Decimal Converter.py",
        icon = "python-xxl.ico",
        targetName = "Binary to Decimal Converter.exe",
        base = base
        )
includefiles = ["python-xxl.ico"]

setup(
    name = "Binary to Decimal Converter",
    version = "0.1",
    description = "Converts Binary values to Decimal values",
    author = "Neeraj Morar",
    options = {'build_exe': {'include_files':includefiles}},
    executables = [exe]
)

如您所见,includefiles由我的图标文件名组成(我应该提醒您将该文件放在与Python脚本相同的目录中)。然后,在setup(代码中,我有options = {'build_exe': {'include_files':includefiles}}

'include_files'调用我创建的includefiles变量。

基本上,您需要做的就是和我做同样的事情,而不是将我的图标文件名放在您的图标文件名中;即includefiles = ["icon.ico"]