PyQt5 5.9 , setWindowIcon( QIcon(*WEB_LINK*) )

PyQt5 5.9 , setWindowIcon( QIcon(*WEB_LINK*) )

嗨, 我的 PyQt5 setWindowIcon 有问题。

当我尝试从本地图像设置我的 window 图标时,它工作得很好。但是当我尝试在线发布 link 时:

setWindowIcon( QIcon("<a href="https://www.google.ge/images/branding/product/ico/googleg_lodp.ico" rel="nofollow noreferrer">https://www.google.ge/images/branding/product/ico/googleg_lodp.ico</a>") )
这是行不通的。该怎么办?它的 32x32 ico 顺便说一句。
~谢谢

您必须使用 QNetworkAccessManager 手动 从 url 下载图像。然后从响应中读取字节,创建一个 QPixmap(因为它有 loadFromData 方法)并从 QPixmap.

初始化一个 QIcon

然后您就可以设置 window 图标了。

import sys

from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout

ICON_IMAGE_URL = "https://www.google.ge/images/branding/product/ico/googleg_lodp.ico"


class MainWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self)

        self.label = QLabel('Image loading demo')

        self.vertical_layout = QVBoxLayout()
        self.vertical_layout.addWidget(self.label)

        self.setLayout(self.vertical_layout)

        self.nam = QNetworkAccessManager()
        self.nam.finished.connect(self.set_window_icon_from_response)
        self.nam.get(QNetworkRequest(QUrl(ICON_IMAGE_URL)))

    def set_window_icon_from_response(self, http_response):
        pixmap = QPixmap()
        pixmap.loadFromData(http_response.readAll())
        icon = QIcon(pixmap)
        self.setWindowIcon(icon)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())