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

20
我一直在使用Tkinter编写一个非常简单的Python脚本。我正在使用Python 2.7.3。
如何更改应用程序图标(例如,在资源管理器窗口和“开始/所有程序”窗口中显示的“文件”图标 - 不是“文件类型”图标或应用程序主窗口的图标),以及任务栏图标(应用程序最小化时显示的图标)? 我只需要支持Windows XP和Win7机器。
7个回答

28

在Windows上的另一个选项如下:

将以下内容添加到您的Python代码中:

import ctypes

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

5
提供原问题的链接会有助于实现:https://dev59.com/w3I_5IYBdhLWcg3wDOdC#1552105 - Pygmalion
这个在Windows 10上能用吗? - Logan Price
1
@LoganPrice 它在Windows 11中运行正常。 - Matthew Panetta

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

但问题在于它只替换了Windows上的图标而没有替换任务栏上的图标。这是因为py文件是从Python解释器中执行的,因此Windows使用其自己的图标而不是tkinter图标。

我认为你需要使用py2exe,cx_Freeze,py2app等工具进行“编译”...

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


1
你说:“……py文件是从Python解释器中执行的,所以Windows使用它自己的图标……”这实际上就是问题所在。 - Jorge Cribb

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格式,结果仍然相同:

enter image description here

希望这有所帮助!


这在PyQt和Tkinter中都不起作用。你知道为什么吗? - nonimportant

4

您可以通过创建指向 python.exepythonw.exe 文件的新快捷方式来实现,(这个选项在Windows资源管理器的右键菜单中可用),然后右键单击快捷方式,选择属性,并将目标更改为:

"C:\Path\to\Python.exe" "Absolute\or\relative\path\to\file.py"

然后在属性窗口中选择更改图标,选择您的.ico文件。从此快捷方式执行程序将自动将所选图标设置为任务栏和窗口图标。

请注意,通过执行设置快捷方式,而不是直接点击.py文件,当前工作目录将是python.exe的目录,而不是您的文件目录,您可以在快捷方式的属性窗口中的“开始于”条目字段(在目标下方)中更改它,或使用python方法os.getcwd()查找当前工作目录和os.chdir(path)来设置它


0
使用PyInstaller创建单个文件exe,并使用Inno Setup构建Windows安装程序包。 Inno Setup会为您处理图标相关的内容。

0

在命令提示符中的pyinstaller命令中添加--icon=iconname.ico参数

例如>> pyinstaller --windowed --add-data "pics/myicon.ico;pics" --add-data "pics/*.png;pics" --icon=pics/myicon.ico -d bootloader myscript.py

这将在Windows任务栏上显示您的图标,而不是默认的Python包图标


-1

对于那些来到这篇文章寻找更准确和完整答案的人:

import tkinter as tk
root = tk.Tk()

root.iconbitmap('/path/to/ico/icon.ico')
root.mainloop()

源参考是delftstack.com


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