我想知道是否仍然可以在不知道图标位置的情况下获取一个窗口的ico文件并在同一窗口中使用它。
from tkinter import *
root = Tk()
root.iconbitmap('img/icn.ico')
top = Toplevel()
root.mainloop()
在这里,我希望top
具有root
的图标,而无需说top.iconbitmap()
或top.iconphoto()
,最接近的ive是top.tk.call('wm','iconbitmap')
,但我不知道这是什么之所以要这样做,是因为我找不到可理解的文档。
为什么我不想使用iconbitmap()
,从根本上来说,您可以使用tkinter.messagebox
看到消息框自动从父窗口小部件继承图标。我正在尝试复制这种效果。如果该图标是默认的tk图标,则显示空白图标,否则显示自定义图标。
先谢谢您了:D
答案 0 :(得分:1)
[[我在这里使用指向Tk核心文档的链接。在大多数情况下,它比Tkinter文档更准确,并且Tkinter大多是一个明显的薄包装。]
您不希望wm iconbitmap
。几十年来,这种方法实际上已经过时了。它使用的对象类bitmap
如今已不相关,因为它是单色的并且使用最奇怪的格式。 (文件名必须在@
之前,以使其起作用。)
相反,您想操纵相关顶级窗口的wm iconphoto
。这些可以拍摄真实的照片图像(您可以加载许多图像文件格式),并且可以轻松共享它们。
# Load the image from the file; can also use PNG and other formats
my_image = PhotoImage(file="image.gif")
# Apply the image as the icons
first_toplevel_window.iconphoto(False, my_image)
second_toplevel_window.iconphoto(False, my_image)
请注意,图标的显示方式可能千差万别;它不受您的控制。
答案 1 :(得分:0)
您可以使用sudo apt update && sudo apt-get update
并将第一个参数设置为iconphoto()
,然后相同的图标也将用于将来创建的顶层:
True