2012-04-11 100 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