从 URL 设置 QIcon() 像素图

Posted

技术标签:

【中文标题】从 URL 设置 QIcon() 像素图【英文标题】:Setting QIcon() pixmap from URL 【发布时间】:2012-05-24 10:48:33 【问题描述】:

如何从 PYQT 中的 url 设置 Qicon,你能给我举个例子吗?

【问题讨论】:

看看QWebSettings.iconForUrl (QUrl url)方法。 这将获取网站图标而不是网站上托管的图标文件 您的意思是:接收托管在 URL 上的文件 并将其用作图标? 不是网站的“favicon”,通常用作标签图标和浏览器的收藏夹菜单? 【参考方案1】:

一个基本的例子是:

from PyQt4.QtGui import *
from PyQt4.QtCore import QUrl
from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest

app = QApplication([])
url = "http://www.google.com/favicon.ico"
lbl = QLabel("loading...")
nam = QNetworkAccessManager()

def finishRequest(reply):
    img = QImage()
    img.loadFromData(reply.readAll())
    lbl.setPixmap(QPixmap(img))

nam.finished.connect(finishRequest)
nam.get(QNetworkRequest(QUrl(url)))
lbl.show()
app.exec_()

【讨论】:

【参考方案2】:

使用requests.get方法下载图像并从中创建QIcon

import sys
import requests

import PySide6
from PySide6.QtWidgets import QTableView, QWidget, QApplication, QGridLayout, QHeaderView
from PySide6.QtCore import Qt, QAbstractTableModel
from PySide6.QtGui import QColor, QIcon, QPixmap

from datetime import datetime

class MagicIcon():
    def __init__(self, link):
        self.link = link
        self.icon = QIcon()
        try:
            response = requests.get(self.link)
            pixmap = QPixmap()
            pixmap.loadFromData(response.content)
            self.icon = QIcon(pixmap)
        except:
            pass

class MainWindow(QWidget):
    def __init__():
        super().__init__()
        self.setWindowIcon(MagicIcon(
            "https://img.icons8.com/external-flatarticons-blue-flatarticons/65/000000/external-analysis-digital-marketing-flatarticons-blue-flatarticons-1.png"
        ).icon)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    wid = MainWindow()
    wid.show()
    sys.exit(app.exec())

【讨论】:

以上是关于从 URL 设置 QIcon() 像素图的主要内容,如果未能解决你的问题,请参考以下文章

Qt 5.7 -> 5.8 将 QIcon 添加到 QListwidget

如何使用PXCOOK(像素大厨)切图

如何为使用 python 保存的 tiff 图像设置像素大小,以便将像素高度和宽度设置为 ImageJ 中的特定值?

PyQt5 可拖动图标从列表视图到另一个

移动端1px像素解决方式,从1px像素问题剖析像素及viewport

qt中怎样把一个控件即加入Qicon变量,又加入文字?如下图