小编典典

为什么设置窗口图标时未定义.ico文件?

python

当我尝试使用以下代码将左上角的窗口图标从难看的红色“ 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功能。但这并不能解释为什么会引发错误!

有一些“骇人的”方法可以避免该问题,但是都不是针对Python 3.x编写的。

所以我的最后一个问题是:是否可以使用Python 3.x和Tkinter获得自定义图标?

另外,不要告诉我应该使用另一个GUI库。我希望我的程序可以在每个平台上运行。我还想要一个编码版本,而不是py2exesth解决方案。


阅读 357

收藏
2020-12-20

共1个答案

小编典典

您需要与favicon.ico脚本位于同一文件夹或字典中,因为python仅在当前字典中搜索,或者您可以输入完整的路径名。例如,这有效:

from tkinter import *
root = Tk()

root.iconbitmap(r'c:\Python32\DLLs\py.ico')
root.mainloop()

但这会因您的错误而爆炸:

from tkinter import *
root = Tk()

root.iconbitmap('py.ico')
root.mainloop()
2020-12-20