让我们从阅读文档开始吧!
effbot.org 的文档对iconbitmap(bitmap=None) 进行了以下说明
设置或获取此窗口图标化时要使用的图标位图。某些窗口管理器(包括 Windows)会忽略此方法。
请注意,此方法只能用于显示单色图标。要显示彩色图标,请将其放入Label 小部件中,然后改用iconwindow 方法显示。
同wm_iconbitmap。
这里是关于iconwindow(window=None)的文档:
设置或获取图标窗口以在此窗口被图标化时用作图标。某些窗口管理器(包括 Windows)会忽略此方法。
同wm_iconwindow。
window
The new icon window. If omitted, the current window is returned.
根据这个other documentation,它实际上与(至少)Python 2.7、3.5 和 3.6 中tkinter 的同名方法的文档字符串说的相同:
wm_iconbitmap(self, bitmap=None, default=None)
将图标化小部件的位图设置为bitmap。如果给出 None,则返回位图。
在 Windows 下,default 参数可用于为小部件和任何没有明确设置图标的后代设置图标。 default 可以是 .ico 文件的相对路径(例如:root.iconbitmap(default='myicon.ico'))。有关详细信息,请参阅 Tk 文档。
这是原始的 Tk 文档:
wm iconbitmap window ?bitmap?
如果指定了位图,则它以 Tk 接受的标准格式命名位图(有关详细信息,请参阅Tk_GetBitmap 手册条目)。该位图被传递给窗口管理器以显示在窗口的图标中,并且该命令返回一个空字符串。如果为bitmap 指定了一个空字符串,则为window 取消任何当前的图标位图。如果指定了bitmap,则该命令返回一个空字符串。否则,它返回与window 关联的当前图标位图的名称,如果window 没有图标位图,则返回一个空字符串。
根据我对Tcl 的理解,这里window 是您的顶级窗口(@987654360@ 或Toplevel 的实例)。
在 Windows 操作系统上,支持附加标志:
wm iconbitmap window ?-default? ?image?
如果给出-default 标志,则该图标将应用于尚未应用其他特定图标的所有顶级窗口(现有和未来)。
除了位图图像类型之外,还接受包含有效 Windows 图标的任何文件的完整路径规范(通常是 .ico 或 .icr 文件),或者外壳已为其分配图标的任何文件。
Tcl 将首先测试文件是否包含图标,然后是否有分配的图标,最后,如果失败,则测试位图。
到目前为止,答案不是很具体,因此很有帮助。
我的结论
当窗口图标化时,应使用iconbitmap 函数(或方法,取决于编程语言)为窗口设置bitmap 图像。
在 Windows 上,您可以为任何包含 valid Windows icon 的文件(通常是 .ico 或 .icr 文件)或 shell 为其分配了图标的任何文件设置完整路径规范.
那么哪些图像是位图?
-
xbm 和 xpm(对于 X 窗口系统)
根据我将“位图”链接到上面的Wikipedia article:
X 窗口系统 使用类似的xbm 格式用于黑白 图像,xpm 用于彩色图像。
...
BMP file format
Netpbm format
.wbmp
-
ILBM
...
所以大多数位图文件格式不是跨平台的!换句话说,如果有人告诉您使用xbm 图像作为图标,它可能无法在您的平台上工作,因为xbm 是X Window System 的位图。
注意:即使在这个答案之后,您仍然可能遇到问题!
其他可能有用的文章