在 tkinter 中仅更改 askopenfilename 的图标,同时在 python 中隐藏主 Tk() window

Changing icon for only askopenfilename in tkinter, while hiding the main Tk() window in python

我想更改 window 图标 仅适用于 tkinter 中的 askopenfilename window 同时隐藏主 Tk() window,但是当我在Tk().withdraw()之前使用Tk().iconbitmap("myIcon.ico")时,虽然图标改变了,但根window仍然没有消失。

这是我的代码:

from tkinter import Tk
from tkinter.filedialog import askopenfilename

window_icon = 'icon.ico'[enter image description here][1]


Tk().iconbitmap(window_icon)
Tk().withdraw()  # keep the root window from appearing

filename = str(askopenfilename(title='Select an image file', initialdir='')

如果我删除此行:Tk().iconbitmap("myIcon.ico") 那么它可以在 window 产卵时正常工作,但是 window.

上没有图标

我想删除这个根window,如图:https://i.stack.imgur.com/SJm0R.png

此外,请建议我是否可以使用 PIL 代码将保存的 jpg 文件转换为可以代替 myIcon.ico 使用的临时 ico 文件数据?因为这种换图标的方法是以.ico文件为输入,我用jpg比较方便。

谢谢

PS: 这是我在 Whosebug 上的第一个问题!!!

实际上你已经创建了两个实例 Tk():

Tk().iconbitmap(window_icon) # first instance
Tk().withdraw()  # 2nd instance

所以你只隐藏了第二个实例。

改为创建 Tk() 的单个实例:

root = Tk()
root.withdraw()  # keep the root window from appearing
root.iconbitmap(window_icon)

您可以使用 JPEG 图像作为使用 PillowPIL 克隆)模块的图标:

from tkinter import Tk
from PIL import ImageTk

root = Tk()
window_icon = ImageTk.PhotoImage(file="icon.jpg")
root.iconphoto(True, window_icon)