当我尝试使用下面的代码将左上角的窗口图标从丑陋的红色“TK”更改为我自己的图标时,Python 抛出了一个错误:
from tkinter import *
root = Tk()
#some buttons, widgets, a lot of stuff
root.iconbitmap('favicon.ico')
这应该将图标设置为“favicon.ico”(根据网络上的许多论坛帖子)。但不幸的是,这一行所做的只是抛出以下错误:
Traceback (most recent call last):
File "d:\ladvclient\mainapp.py", line 85, in <module>
root.iconbitmap(bitmap='favicon.ico')
File "C:\Python33\lib\tkinter__init__.py", line 1637, in wm_iconbitmap
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "favicon.ico" not defined
我已经做了什么:
- 我检查了路径——一切都是 100% 正确的
- 我尝试了其他文件格式,例如
.png
或.bmp
- 都没有用 - 我在很多网站上查过这个问题
对于第三点,我最喜欢的 Tkinter 网站 effbot.org 告诉我 Windows 会忽略 iconbitmap
函数。但这并不能解释为什么它会抛出错误!
有一些“hackish”方法可以避免该问题,但它们都不是为 Python 3.x 编写的。
所以我的最后一个问题是:有没有办法使用 Python 3.x 和 Tkinter 获得自定义图标?
另外,不要告诉我应该使用另一个 GUI 库。我希望我的程序可以在每个平台上运行。我还想要一个编码版本,而不是 py2exe
或 sth
解决方案。
原文由 CrushedPixel 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要将
favicon.ico
放在与脚本相同的文件夹或字典中,因为 python 仅在当前字典中搜索,或者您可以输入完整路径名。例如,这有效:但这会因您的相同错误而爆炸: