如何在Tkinter应用程序中更换图标?

38
我正在使用 Windows 10 上的 Python 3.5.0,想要替换这个代码:

with something else.

8个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
37

要更改图标,您应该使用iconbitmapwm_iconbitmap函数。我认为您想更改的文件必须是ico文件。

import tkinter as tk

root = tk.Tk()
root.iconbitmap("myIcon.ico")

2
如果文件在同一目录下,那么只需要文件名即可。否则,请将整个文件路径作为字符串。 - Steven Summers

21
如果您没有一个 icon.ico 文件,可以使用 ImageTk.PhotoImage(ico)wm_iconphoto
import tkinter as tk
from PIL import Image, ImageTk

root = tk.Tk()

ico = Image.open('test.jpg')
photo = ImageTk.PhotoImage(ico)
root.wm_iconphoto(False, photo)

root.mainloop()

注意:

如果默认为True,则此设置也将应用于所有未来创建的toplevel。图像中的数据是在调用时拍摄的快照。

不同操作系统下的详细实现:

  • 在Windows上,图像被打包到Windows图标结构中。这将覆盖指定给wm iconbitmap的ico,反之亦然。
  • 在X上,图像被排列成_NET_WM_ICON X属性,大多数现代窗口管理器都支持。wm iconbitmap可以同时存在。建议使用不超过2个图标,先放置较大的图标。
  • 在Macintosh上,这将使用指定的图像设置Dock图标。

查看更多

TkVersion 8.6tk.PhotoImage(filepath)支持的格式:

  • PNG
  • GIF
  • PPM/PGM

因此,代码可以简化为使用.png文件:

import tkinter as tk 
root = tk.Tk() 
photo = tk.PhotoImage(file = 'test.png')
root.wm_iconphoto(False, photo)
root.mainloop()

8

tkinter的输入

from tkinter import *

app = Tk()
app.title('Tk')
app.geometry('')

app.iconbitmap(r'C:\Users\User\PycharmProjects\HelloWorld\my.ico')
app.mainloop()

pyinstaller的输入

pyinstaller --onefile -w -F --add-binary "my.ico;." my.py

3

这里有另一种解决方案,不需要强制使用ico文件:

from tkinter import *

root = Tk()
root.geometry("200x200")
root.iconphoto(False, tk.PhotoImage(file='C:\\Users\\Pc\\Desktop\\icon.png'))
root.mainloop()


1

您的代码或文件夹中不能有favicon.ico。请使用完整路径名,例如:

from tkinter import *
root = Tk()

root.iconbitmap(r'c:\Python32\DLLs\py.ico')
root.mainloop()

这将起作用


1
不需要这样做,你可以直接从当前目录上传它,它完全可以正常工作。 - Pycoder

1

0
from tkinter import *

root = Tk()

root.title('how to put icon ?')

root.iconbitmap('C:\Users\HP\Desktop\py.ico')
   
root.mainloop()

0

这里有另一种通过Tcl命令的方法:

import tkinter as tk

window=tk.Tk()
window.tk.call('wm', 'iconphoto', win._w, tk.PhotoImage(file=r"my_icon.png"))
window.mainloop()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,