带有 cx_freeze 的 python 3.2 tkinter 图标
Posted
技术标签:
【中文标题】带有 cx_freeze 的 python 3.2 tkinter 图标【英文标题】:python 3.2 tkinter icon with cx_freeze 【发布时间】:2013-08-21 13:50:05 【问题描述】:我正在使用这个,当我启动 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 以包含图标文件?
【问题讨论】:
How can i bundle other files when using cx_freeze?的可能重复 另见文档中的using data files。 【参考方案1】:我不知道你是否解决了这个问题(考虑到这个问题有多老),但我遇到了和你完全相同的问题,感谢你的问题,它实际上解决了我的问题。
为了包含您的图标文件(或 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"]
。
【讨论】:
现在工作了。_tkinter.TclError Could not open \C:\Users\Name\AppData\Local\Programs\AppName\library.zip\icon.png. No such file or directory
有什么办法解决这个问题吗?
@ajinzrathod 似乎您的文件路径看起来不正确,它似乎将您的 C: 驱动器视为子文件夹,因为路径开头有 `\`。在没有看到您的代码的情况下,如果您将图标放在与 Python 脚本相同的目录中,并且只需引用名称“icon.png”,它应该可以工作。
哦,对不起。我忘了提。我使用了python setup.py bdist_msi
并创建了 MSI 安装程序。我还创建了一个桌面快捷方式。所以当我从桌面打开时,它不起作用。但它确实从应用程序所在的根目录工作以上是关于带有 cx_freeze 的 python 3.2 tkinter 图标的主要内容,如果未能解决你的问题,请参考以下文章
Python 3.2:cx_freeze 编译我的程序,但处于调试模式
使用 cx_Freeze 创建一个带有 Python 3.4 的 exe
Cx_freeze 不适用于带有 Python 3.6.2 的 Win 10
cx_freeze 使 selenium 无法在 python 中截屏
cx_Freeze:Python 错误主脚本。找不到模块错误:没有名为 pygments.lexers.python 的模块