PyQT5 - MAC OS - 为单个窗口标题栏设置不同的图标

Posted

技术标签:

【中文标题】PyQT5 - MAC OS - 为单个窗口标题栏设置不同的图标【英文标题】:PyQT5 - MAC OS - Set different icon for single window title-bar 【发布时间】:2017-06-23 22:45:14 【问题描述】:

我在python3 程序上工作,GUI 使用PyQT5 构建。所有的窗口都有黑色图标,但我想要一个图标有一个蓝色图标。这该怎么做?这是我的代码:

import sys

from PyQt5 import QtGui
from PyQt5.QtWidgets import QApplication, QWidget


class BlackWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Window with black icon')
        self.show()


class BlueWindow(QWidget):

    def __init__(self):
        super().__init__()
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Window with blue icon')
        self.setWindowIcon(QtGui.QIcon('./blue-icon.png'))  # this has no effect!!
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    app.setWindowIcon(QtGui.QIcon('./black-icon.png'))

    black_window_first = BlackWindow()
    black_window_second = BlackWindow()
    black_window_third = BlackWindow()
    blue_window_first = BlueWindow()

    sys.exit(app.exec_())

看起来QWidgetsetWindowIcon 方法无效。这是为什么?是否有任何解决方法?我正在使用 MacOS El Capitan。

【问题讨论】:

【参考方案1】:

您的代码在 Ubuntu 上适用于我。您可以尝试将应用设置为蓝色图标以确保它有效。

当我为蓝色图标输入无效路径时,我得到的是默认路径,而不是黑色图标。

这不是问题,但我看到如果给子窗口的图标无效,则代码使用父窗口的图标略有不同。

【讨论】:

以上是关于PyQT5 - MAC OS - 为单个窗口标题栏设置不同的图标的主要内容,如果未能解决你的问题,请参考以下文章

没有模块 QtMultimedia [Mac OS - Anaconda - Python 3.7 - PyQt5]

PyQt5学习--基本窗口控件--QMainWindow

弹出窗口Mac OS在Qt

PyQT5 QFileDialog窗口标题未在mac上显示

PyQt5快速入门PyQt5基本窗口组件

如何使用 QML 和 PyQt5 创建一个没有标题栏的小通知窗口