PyQt5 5.9, setWindowIcon( QIcon(*WEB_LINK*))
Привет, у меня есть проблема с моим PyQt5 setWindowIcon.
Когда я пытаюсь установить значок моего окна из локального изображения, он работает отлично. Но когда я пытаюсь поставить ссылку онлайн, как:
setWindowIcon( QIcon(" https://www.google.ge/images/branding/product/ico/googleg_lodp.ico") )
это не работает. Что делать? Его 32x32 ICO кстати.
~ Спасибо
1 ответ
Вы должны использовать QNetworkAccessManager
и вручную загрузить изображение с URL. Затем прочитайте байты из ответа, создайте QPixmap (поскольку у него есть метод loadFromData) и инициализируйте QIcon из QPixmap.
И после этого вы сможете установить значок окна.
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_())