我有一个带有 Tkinter 窗口的程序,我想为该窗口设置一个图标。我使用这段代码:
window.iconbitmap(os.path.dirname(os.path.abspath(__file__))+"/icon.png")
但是抛出以下错误:
Traceback (most recent call last):
File "myprogram.py", line 241, in <module>
window.iconbitmap(os.path.dirname(os.path.abspath(__file__))+"/icon.png")
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1591, in wm_iconbitmap
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "/home/guest/documents/myprogramdir/icon.png" not defined
我认为这是因为我的图标文件与其余代码位于同一目录中。但这就是我想要的。有解决办法吗?
假设此错误是在 Windows 操作系统中引发的,问题是
iconbitmap
似乎不支持 Windows 中的 png
文件类型。请改用 .ico
文件类型。这个网络工具对我来说非常有用 - https://iconverticons.com/online/。对于 Linux 操作系统,请使用 xbm
文件类型。
PS-下次提问时请提供相关详细信息。例如:出现此错误的操作系统的名称和版本。
使用 Pillow 库将文件转换为 ico 格式的代码。可用格式:https://pillow.readthedocs.io/en/latest/handbook/image-file-formats.html
from PIL import Image
filen = r'icon.png'
img = Image.open(filen)
img.save('icon.ico',format = 'ICO', sizes=[(32,32)])
app.iconbitmap(r'C:\Users\User\PycharmProjects\HelloWorld\my.ico')
pyinstaller --onefile -w -F -i "my.ico" my.py
您可以设置图标目录,与代码位于同一文件夹中并不重要,例如我将图标保存在该地址的图像文件夹中:C:\PYTHON\library\images
from tkinter import *
win = Tk()
win.iconbitmap('C:/PYTHON/library/images/book5.ico')
win.mainloop()
路径前需要使用关键字“bitmap”或“default”:
window.iconbitmap(bitmap="Icon path.ico")
或:
window.iconbitmap(default="Icon path.ico")
如果您使用的是 Windows,“默认”选项不仅将文件设置为指定窗口的图标,而且还为其所有未显式设置任何图标的子窗口设置图标。 请注意,您必须使用 .ico 文件(我尝试过使用其他类型的文件,但没有成功)。
避免此错误的最佳和最简单的方法是转到 VS code 或您正在使用的任何 IDE 的终端,使用 cd 命令将路径设置为当前路径,然后运行它。它绝对可以运行。