如何使用 Tkinter 设置 window 图标?

How do I setup a window Icon using Tkinter?

我正在尝试设置一个 window 图标,这样它就会出现在我正在使用的词典名称旁边。当我 运行 代码时,出现以下问题:

Traceback (most recent call last):
  File "/Users/sergioley-languren/Latin_app/windows.py", line 20, in <module>
    window.iconphoto(False, tk.PhotoImage(file='/Users/sergioley-languren/home/Latin_app/Logo.jpeg'))
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/__init__.py", line 4061, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/tkinter/__init__.py", line 4006, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't recognize data in image file "/Users/sergioley-languren/Latin_app/Logo.jpeg"

当我尝试使用 iconbitmap tkinter 函数将 .jpeg 文件转换为 .ico 图片时,它起作用了,但我得到的是一个空白页面图标。下面的代码是有问题的代码:

### Imports
import tkinter as tk
from tkinter import *
from pathlib import Path

##Extra Code
home = print(Path.home())
### Application screen code
window = Tk()

##Frame
frame1 = Frame(window)
frame1.pack()

## Window Title
window.title("Latin Unit 1 Dictionary - Based on Orion Academy Latin I , Unit 1")
window.geometry('1110x950')

#App Icon
window.iconphoto(False, tk.PhotoImage(file='/Users/sergioley-languren/home/Latin_app/Logo.jpeg'))

## Window Main Loop
window.mainloop()

谁能告诉我如何解决它? (如果有帮助,我正在使用 MacOs Catilina。)

tkinter.PhotoImage 仅支持 GM, PPM, GIF, PNG image.Your 图片是 JPEG,肯定会引发异常。

有一些解决办法,但是直接的方法是把图片扩展名改成ico然后用iconbitmap()

from PIL import Image

img = Image.open(r"xxx.jpeg") # your jpeg image path
img.save(r"Icon.ico")

这将在您当前的路径中生成一个新的 ico 图像。

那你就可以直接用iconbitmap('Icon.ico')

这适用于为 Tkinter 应用程序设置图标

from tkinter import *
window =Tk()
##set title for window
window.title("Tkinter App")
##set window icon  
window.iconphoto(False,PhotoImage(file='logo.png'))
window.mainloop()