Python tkinter图标可以使用哪些文件格式?

Python tkinter图标可以使用哪些文件格式?,python,python-2.7,tkinter,.ico,Python,Python 2.7,Tkinter,.ico,我知道这可能是显而易见的,但在tkinter你可以设置一个图标,但我发现很难找到一个。我只是想知道您是否必须为文件使用.ico格式,或者是否有方法使用.png或.jpeg文件 目前我有 window = Tkinter.Tk() window.title("Weclome!") window.geometry("200x300") window.wm_iconbitmap("Icon.ico") window.configure(background = "Black") 这就是我的全部设置,

我知道这可能是显而易见的,但在tkinter你可以设置一个图标,但我发现很难找到一个。我只是想知道您是否必须为文件使用
.ico
格式,或者是否有方法使用
.png
.jpeg
文件

目前我有

window = Tkinter.Tk()
window.title("Weclome!")
window.geometry("200x300")
window.wm_iconbitmap("Icon.ico")
window.configure(background = "Black")
这就是我的全部设置,我只想了解第4行:

window.wm_iconbitmap("Icon.ico") 
感谢您回答我的问题,但很抱歉,我没有花更多的时间研究这个问题,而只是在这里提问。

让我们从阅读文档开始! 位于的文档说明了以下关于
iconbitmap(位图=无)

设置或获取此窗口图标化时要使用的图标位图。某些窗口管理器(包括Windows)会忽略此方法

请注意,此方法只能用于显示单色图标。要显示颜色图标,请将其放入
标签
小部件中,并改用
iconwindow
方法显示

wm\u iconbitmap
相同

下面是关于
iconwindow(window=None)
的文档:

设置或获取图标窗口,以在该窗口图标化时用作图标。某些窗口管理器(包括Windows)会忽略此方法

wm\u iconwindow
相同

窗口

The new icon window. If omitted, the current window is returned.
根据这一点,它实际上与(至少)Python 2.7、3.5和3.6中的
tkinter
同名方法的docstring说的是相同的:

wm\u iconbitmap(自身,位图=无,默认值=无)

将图标化小部件的位图设置为
bitmap
。如果未给出位图,则返回位图

在Windows下,
default
参数可用于为小部件和未明确设置图标的任何子代设置图标
default
可以是
.ico
文件的相对路径(例如:
root.iconbitmap(default='myicon.ico')
)。有关更多信息,请参阅Tk文档

下面是原始的Tk文档:

如果指定了位图,那么它将以Tk接受的标准形式命名位图(有关详细信息,请参阅手册条目)。该位图被传递到窗口管理器,以显示在窗口的图标中,该命令返回一个空字符串。如果为
位图
指定了空字符串,则将取消
窗口
的任何当前图标位图。如果指定了
bitmap
,则命令返回空字符串。否则,它将返回与
窗口
关联的当前图标位图的名称,如果
窗口
没有图标位图,则返回空字符串

根据我对
Tcl
的理解,这里的
window
是您的顶级窗口(可以是
Tk
toplevel

在Windows操作系统上,支持附加标志:

wm iconbitmap window ?-default? ?image?
如果给出了
-default
标志,则该图标将应用于尚未应用其他特定图标的所有顶级窗口(现有和未来)

除位图图像类型外,还接受包含有效Windows图标的任何文件的完整路径规范(通常为
.ico
.icr
文件),或shell已为其指定图标的任何文件

Tcl将首先测试文件是否包含图标,然后测试它是否有指定的图标,最后,如果失败,测试位图

到目前为止,答案不是很具体,因此很有帮助


我的结论 当窗口图标化时,应使用
iconbitmap
函数(或方法,取决于编程语言)为窗口设置图像

在Windows上,您可以将完整路径规范设置为任何包含也被接受的文件(通常是
.ico
.icr
文件),或shell已为其指定图标的任何文件

那么哪些图像是位图呢?
  • 和(对于X窗口系统)

    根据我将“位图”链接到上面的链接:

    X Window系统对黑白图像使用类似的
    xbm
    格式,对彩色图像使用类似的
    xpm

  • 因此,大多数位图文件格式都是而不是跨平台的!换句话说,如果有人告诉您使用
    xbm
    图像作为图标,它可能无法在您的平台上工作,因为
    xbm
    是X窗口系统的位图

    注意:即使回答了这个问题,您仍然可能会遇到问题


    其他可能有用的文章

    我也在苦苦寻找答案,但最后我浏览了idle3.6的源代码,发现了以下代码:

    # set application icon
    icondir = os.path.join(os.path.dirname(__file__), 'Icons')
    if system() == 'Windows':
        iconfile = os.path.join(icondir, 'idle.ico')
        root.wm_iconbitmap(default=iconfile)
    else:
        ext = '.png' if TkVersion >= 8.6 else '.gif'
        iconfiles = [os.path.join(icondir, 'idle_%d%s' % (size, ext))
                     for size in (16, 32, 48)]
        icons = [PhotoImage(master=root, file=iconfile)
                 for iconfile in iconfiles]
        root.wm_iconphoto(True, *icons)
    
    我使用该软件在idlelib文件夹中的所有文件中搜索.ico和.png

    因此,最后我设法通过以下两行代码使窗口图标工作(在TkVersion>=8.6的GNU linux上):

    icon = PhotoImage(master=root, file='icon.png')
    root.wm_iconphoto(True, icon)
    
    我将图标直接放在我的应用程序文件夹中


    从空闲代码来看,在Windows上似乎仍然只支持.ico文件。

    我意外地回答了我自己要找的问题。然而,尽管这里提出的问题略有不同,我认为我的回答仍然很有用。