【问题标题】:PyQt5 5.9 , setWindowIcon( QIcon(*WEB_LINK*) )PyQt5 5.9 , setWindowIcon( QIcon(*WEB_LINK*) )
【发布时间】:2018-01-14 23:43:01
【问题描述】:

嗨,我的 PyQt5 setWindowIcon 有问题。

当我尝试从本地图像设置窗口图标时,它可以完美运行。但是当我尝试放置一个在线链接时:

setWindowIcon( QIcon("@987654321@") )
这没用。该怎么办?顺便说一句,它的 32x32 ico。
~谢谢

【问题讨论】:

  • 你是认真的吗?只需下载并保存到磁盘。
  • 大声笑,我正在构建一个动态的东西......
  • @ვანიჩკაა Qt 使用的 url 仅指本地文件或 .qrc 中的文件,如果您想使用 url 图标,无论如何都应该下载它,如果发生变化,您应该下载它并再次更新。如果您想知道如何使用 PyQt 下载它,请阅读以下内容:stackoverflow.com/questions/10735977/…
  • @ვანიჩკაა。这没什么区别。一种或另一种方式,必须下载图像文件。你认为它还能如何工作?
  • @ekhumoro 谢谢你,但我注意到它适用于一秒钟,然后消失,你知道这里发生了什么吗?

标签: python pyqt qicon


【解决方案1】:

您必须使用QNetworkAccessManager手动从网址下载图片。然后从响应中读取字节,创建一个 QPixmap(因为它有loadFromData 方法)并从 QPixmap 初始化一个 QIcon。

然后你就可以设置窗口图标了。

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

【讨论】:

  • 谢谢。我稍后会试试
  • @Pixsa 已经 3 年了...
  • @BlueGuy 对不起,伙计,我放弃了:D
  • 这可能是解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多