当我试图使用下面的代码将左上角的窗口图标从难看的红色"TK"更改为我自己的favicon时,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%正确的
  • 我try 过其他文件格式,比如.png.bmp,但都不管用
  • 我在很多网站上都查到了这个问题

第三点,effbot.我最喜欢的Tkinter网站org告诉我Windows忽略了iconbitmap功能.

有一些"黑客"方法可以避免这个问题,但没有一种是为Python 3编写的.十、

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

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

推荐答案

您需要在与脚本相同的文件夹或字典中有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()

Python-3.x相关问答推荐

类型注释:pathlib. Path vs importlib. resources. abc. Traversable

如何创建多个日志(log)文件

确定字符串的长度并提取前15或14个字符

如何在当前测试中使用fixture 转换后的数据进行参数化?

ValueError at /register/ 视图authenticate.views.register_user 未返回HttpResponse 对象.它返回 None 相反

需要找到完全匹配并使用正则表达式替换

将数据框中的值与另一个数据框中的多列进行比较,以获取条目以有效方式匹配的列表列表

pytorch 中 mps 设备的 manual_seed

位对的距离

Jupyter Notebook 拒绝打印一些字符串

Python多进程:运行一个类的多个实例,将所有子进程保留在内存中

spaCy 中的匹配模式返回空结果

使用 Python 解析 JSON 嵌套字典

无法在 macOS 上的 Anaconda3 python3.6 上安装 OpenCV3

创建一个可旋转的 3D 地球

判断对 python 3 支持的要求

我们如何获得 __repr__() 的默认行为?

Anaconda 中的依赖项和包冲突?

有没有一种标准方法来确保 python 脚本将由 python2 而不是 python3 解释?

如何使用异步 for 循环遍历列表?