2012-04-11 54 views
0

我目前正在PyQt4中開發我的第一個應用程序,現在我想要做的是從網站上的圖像源設置我的應用程序的窗口圖標。PyQt4 - 來自外部網站的setWindowIcon

我以爲這樣的事情會起作用,但情況並非如此: self。

# Sets the application icon 
def set_app_icon(self, icon_url): 
    self.setWindowIcon(QIcon(QUrl(icon_url))) 

self.set_app_icon('http://web.page/icon.png') 

我該如何做到這一點?先謝謝你。

+0

你得到了什麼錯誤信息? – user850498 2012-04-11 11:45:36

+0

沒有錯誤信息,但沒有顯示圖標。 – 2012-04-11 12:14:33

回答

2

QIcon無法訪問並從Web獲取數據。您需要自己下載並將其提供給QIcon。類似這樣的:

import sys 
from PyQt4 import QtGui, QtCore, QtNetwork 

class Main(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     super(Main, self).__init__(parent) 

    def loadIconFromUrl(self, url): 
     manager = QtNetwork.QNetworkAccessManager(self) 
     manager.finished.connect(self._setIconFromReply) 
     manager.get(QtNetwork.QNetworkRequest(QtCore.QUrl(url))) 

    def _setIconFromReply(self, reply): 
     p = QtGui.QPixmap() 
     p.loadFromData(reply.readAll(), format="ico") 
     self.setWindowIcon(QtGui.QIcon(p)) 

app = QtGui.QApplication(sys.argv) 
main = Main() 
main.loadIconFromUrl("http://en.wikipedia.org/favicon.ico") 
main.show() 
sys.exit(app.exec_()) 
+0

非常感謝!像魅力一樣工作! – 2012-04-12 08:38:39