在我的python Tk基础应用程序中设置应用程序图标(在Ubuntu上)

har*_*he1 3 python ubuntu tkinter

我想在我的基于Python Tk包的GUI应用程序中设置一个图像.

我试过这段代码:

root.iconbitmap('window.xbm')
Run Code Online (Sandbox Code Playgroud)

但它给了我这个:

root.iconbitmap('window.xbm')
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1567, in wm_iconbitmap
    return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: bitmap "window.xbm" not defined
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

pat*_*yts 12

你想用wm iconphoto.比Python Tkinter更习惯于Tcl/Tk我不知道这是怎么暴露给你的(也许root.iconphoto)但它需要一个tkimage.在Tcl/Tk:

image create photo applicationIcon -file application_icon.png
wm iconphoto . -default applicationIcon
Run Code Online (Sandbox Code Playgroud)

在Tk 8.6中,您可以提供PNG文件.在此之前,您必须使用TkImg扩展来支持PNG或使用GIF.Python PIL包可以为您将图像转换为TkImage对象,但这应该有所帮助.

编辑

我也在Python中试过这个,以下内容对我有用:

import Tkinter
from Tkinter import Tk
root = Tk()
img = Tkinter.Image("photo", file="appicon.gif")
root.tk.call('wm','iconphoto',root._w,img)
Run Code Online (Sandbox Code Playgroud)

在Ubuntu上以交互方式执行此操作会导致应用程序图标(框架左上角的图像并显示在任务栏中)被更改为使用我提供的gif图像.


kal*_*nik 0

尝试这个:

root.iconbitmap('@window.xbm')
Run Code Online (Sandbox Code Playgroud)

并引用:

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

请注意,此方法只能用于显示单色图标。要显示彩色图标,请将其放入 Label 小部件中,然后使用 iconwindow 方法显示它。