简体   繁体   English

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

[英]PyQt5 5.9 , setWindowIcon( QIcon(*WEB_LINK*) )

Hi, I have an issue with my PyQt5 setWindowIcon. 嗨,我的PyQt5 setWindowIcon有问题。

When I try to set my window icon from a local image, it works perfectly. 当我尝试从本地图像设置窗口图标时,它可以完美运行。 But when I try to put a online link like: 但是当我尝试放置一个在线链接时:

setWindowIcon( QIcon(" https://www.google.ge/images/branding/product/ico/googleg_lodp.ico ") )
it does not work. 这是行不通的。 What to do? 该怎么办? Its 32x32 ico btw. 它的32x32 ico btw。
~Thanks 〜谢谢

You have to use QNetworkAccessManager and manually download image from url. 您必须使用QNetworkAccessManager并从url 手动下载图像。 Then read bytes from response, create a QPixmap (beacuse it has loadFromData method) and initialize a QIcon from QPixmap. 然后从响应中读取字节,创建一个QPixmap(因为它具有loadFromData方法)并从QPixmap初始化QIcon。

And after that you will be able to set window icon. 之后,您将能够设置窗口图标。

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_())

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM