更改应用程序和任务栏图标 - Python/Tkinter

20 投票
7 回答
59246 浏览
提问于 2025-04-17 16:01

我正在用Tkinter写一个非常简单的Python脚本,使用的是Python 2.7.3。

我想知道怎么更改应用程序的图标(比如在资源管理器窗口和开始/所有程序窗口中显示的“文件”图标,而不是“文件类型”图标或应用程序主窗口的图标),还有任务栏图标(就是当应用程序最小化时在任务栏上显示的图标)。我只需要支持Windows XP和Win7的电脑。

7 个回答

5

我有一个 music_app.py 文件和一个 melody.ico 文件。

如果你使用 Tkinter,可以这样做:

from tkinter import *
root = Tk()
root.title("melody")
root.iconbitmap(r"melody.ico")
root.mainloop()

如果你使用 PyQT,可以这样做:

from PyQt4 import QtGui
import sys

app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
Form.setWindowIcon(QtGui.QIcon('melody.ico'))
Form.setWindowTitle('melody')
Form.show()
sys.exit(app.exec_())

之后,你可以选择把 music_app.py 转换成 .exe 文件,也可以不转换,结果都是一样的:

这里插入图片描述

希望这对你有帮助!!!

16

使用

root.iconbitmap(default='ardulan.ico')

但是问题是,它只会替换窗口上的图标,而不会替换任务栏上的图标。这是因为这个py文件是通过Python解释器执行的,所以Windows使用的是它自己的图标,而不是tkinter的图标。

我觉得你需要用py2exe、cx_Freeze、py2app等工具来“编译”它。

http://www.py2exe.org/index.cgi/CustomIcons

29

在Windows上还有另一种选择:

在你的Python代码中添加以下内容:

import ctypes

myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid)

撰写回答