【问题标题】:Changing the application and taskbar icon - Python/Tkinter更改应用程序和任务栏图标 - Python/Tkinter
【发布时间】:2013-02-15 17:53:39
【问题描述】:

我一直在研究一个非常简单的 python/tkinter 脚本(一个 .pyw 文件),我想更改它的应用程序图标(资源管理器窗口中显示的“文件”图标和 start/所有程序窗口,例如 - 不是“文件类型”图标,也不是应用程序图标的主窗口)和任务栏图标(最小化应用程序时任务栏上显示的图标)。是否可以更改它们,或者只有当您通过 .exe 有效地安装应用程序时才可行?

这个小应用程序应该只能在 Windows XP / 7 机器上运行,它使用 Python 2.7.3。

提前致谢!

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    Windows 上的另一个选项如下:

    在您的 python 代码中添加以下内容:

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

    【讨论】:

    【解决方案2】:

    使用

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

    但问题是它只替换了窗口上的图标而不是任务栏上的图标。这是因为 py 文件是从 python 解释器执行的,所以 windows 使用他的图标而不是 tkinter 图标。

    我认为你必须用 py2exe、cx_Freeze、py2app 来“编译”它...

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

    【讨论】:

    • 你说:“...py 文件是从 python 解释器执行的,所以 windows 使用他的图标...”其实这就是问题
    【解决方案3】:

    我有一个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 或不转换,结果保持不变:

    希望对你有帮助!!!

    【讨论】:

    • 这不适用于 PyQt 和 Tkinter。你知道为什么吗?
    【解决方案4】:

    您可以通过创建 python.exepythonw.exe 文件的新快捷方式来做到这一点,(在 Window 的资源管理器右键菜单中提供该选项),然后右键单击快捷方式,选择属性,然后将目标更改为:

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

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

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

    【讨论】:

      【解决方案5】:

      使用 PyInstaller 创建单个文件 exe 并使用 Inno Setup 构建 Windows 安装程序包。 Inno Setup 会为你做图标的工作。

      【讨论】:

        【解决方案6】:

        对于那些寻求更准确和完整答案的人:

        import tkinter as tk
        root = tk.Tk()
        
        root.iconbitmap('/path/to/ico/icon.ico')
        root.mainloop()
        

        来源参考是delftstack.com

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-17
          • 1970-01-01
          • 2013-08-12
          • 2012-02-12
          • 1970-01-01
          • 1970-01-01
          • 2012-12-20
          相关资源
          最近更新 更多