【问题标题】:Setting the Windows taskbar icon in PyQt在 PyQt 中设置 Windows 任务栏图标
【发布时间】:2012-09-08 02:20:57
【问题描述】:

我正在 Python 的 PyQt4 中开发一个应用程序,但找不到如何更改任务栏图标。我在 Qt 的设计器中创建了我的 .ui 文件,我可以在其中更改 windowIcon 属性。但这不是我要找的。我想更改 Windows 任务栏中应用程序图标的外观。目前它是一个窗口图标中的 Python 徽标。

我在 SO:link 上找到了一些信息,但这对我没有多大帮助。

我试过了:

app = QtGui.QApplication([])
app.setWindowIcon(QtGui.QIcon('chip_icon_normal.png'))
app.exec_()

但图标保持不变。

我要更改的内容,显示图片: (这是在主窗口/对话框或应用程序上调用 setWindowIcon 完成的,如上所示。)

【问题讨论】:

  • 你在哪个平台上?为什么那个 SO 链接对你没有帮助?
  • 如果您不是在寻找windowIcon 定义的图标,我不确定您在寻找哪个图标。截图会有所帮助。
  • @ekhumoro 我在 Windows 8 64 位上有 Python 2.7,使用 PyQt4。该链接对我没有帮助,因为它更改了窗口左上角图标,而不是任务栏中的图标,如编辑后的帖子所示。
  • @Marko。但是您是否阅读了accepted answer 并尝试了建议的解决方法?
  • @Marko:或者,如果您将应用程序转换为带有自己图标的exe(带有py2exepyinstaller),这也可以解决问题。请注意,如果您最终打算这样做。

标签: python windows pyqt icons taskbar


【解决方案1】:

此问题是由 Windows 平台上任务栏图标处理方式的一些特殊性引起的。

有关详细信息,请参阅this answer,以及使用ctypes 的解决方法。

【讨论】:

    【解决方案2】:

    在我看来,问题可能是由于缺少大小合适的图标引起的。 以下设置在 PyQT4 中对我有用:

    # set app icon    
    app_icon = QtGui.QIcon()
    app_icon.addFile('gui/icons/16x16.png', QtCore.QSize(16,16))
    app_icon.addFile('gui/icons/24x24.png', QtCore.QSize(24,24))
    app_icon.addFile('gui/icons/32x32.png', QtCore.QSize(32,32))
    app_icon.addFile('gui/icons/48x48.png', QtCore.QSize(48,48))
    app_icon.addFile('gui/icons/256x256.png', QtCore.QSize(256,256))
    app.setWindowIcon(app_icon)
    

    我在 Windows 7 中有一个任务栏图标,并且所有窗口中的图标都更正了,而没有对 ui 文件进行任何更改。

    【讨论】:

    • 在 Windows 10 中没有给我任务栏图标
    • 不幸的是无法正常工作。在 Windows 10 上。
    【解决方案3】:

    您需要在窗口而不是应用程序上调用 setWindowIcon(...)。

    这是一个适合我的示例:

    #!/usr/bin/env python3
    
    import os
    import sys
    import subprocess
    import os.path
    
    from PyQt4 import QtGui
    from PyQt4 import QtCore
    
    class MyWin(QtGui.QMainWindow):
        def __init__(self, parent=None):
            super(MyWin, self).__init__(parent)
            self.setWindowTitle("My Window")
            self.setWindowIcon(QtGui.QIcon('test_icon.png'))
            self.show()
    
    def main(args):
        app = QtGui.QApplication([])
    
        ww= MyWin()
        sys.exit(app.exec_())
    
    if __name__ == '__main__':
        main(sys.argv[1:])
    

    【讨论】:

    • 不,为QApplication 设置一个图标就可以了。它定义了默认图标。任何未指定图标的窗口都将使用它。 See docs
    • @Jeremiah 我不知道它是否会起作用,因为我以不同的方式初始化我的代码,但我认为你用 setWindowIcon 方法做同样的事情,但它是左上角的小图标如果我没记错的话,是窗户吗?
    • 其实我的回答并不能解决问题。我刚刚尝试在 __init__() 方法中删除 self.setWindowIcon(...) ,并在 main 内部调用 app.setWindowIcon(...) ,正如Avaris所说,它可以工作。我无法解释为什么它对我有用,但对 Marko 无效。
    【解决方案4】:

    对我来说,以下代码适用于更改任务栏图标和窗口图标

    win.setWindowIcon(QIcon('logo.png'))
    

    【讨论】:

    • 欢迎来到 StackOverflow!您正在回答一个已经有答案的非常古老的问题。 OP 已经尝试过您的代码,但在他的情况下不起作用。
    • @user6657441 与 Kamyar 相同,只是您适合 PyQt5,它现在使用 setWindowIcon() 跨平台处理它
    猜你喜欢
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2010-09-18
    • 1970-01-01
    相关资源
    最近更新 更多