2010-02-19 5 views
4

Je travaille sur un navigateur Web de kiosque en utilisant Qt et PyQt4. QWebView semble fonctionner assez bien, sauf pour un caprice.QWebView ne charge pas de ressources externes

Si une URL ne parvient pas à charger pour une raison quelconque, je souhaite rediriger l'utilisateur vers une page d'erreur personnalisée. J'ai fait ceci using le signal de loadFinished() pour vérifier le résultat, et change l'URL à la page personnalisée si nécessaire en utilisant QWebView.load(). Cependant, toute page que j'essaie de charger ici ne parvient pas à extraire des ressources externes telles que CSS ou images. L'utilisation de QWebView.load() pour définir la page initiale au démarrage semble fonctionner correctement. Si vous cliquez sur un lien de la page d'erreur personnalisée, le chargement de la page de destination est correct. C'est juste la page d'erreur qui ne fonctionne pas.

Je ne sais pas vraiment où aller ensuite. J'ai inclus la source pour une application qui reproduira le problème ci-dessous. Il prend une URL comme un argument de ligne de commande - une URL valide s'affichera correctement, une mauvaise URL (par exemple, la résolution DNS échoue) redirigera vers Google, mais avec le logo manquant.

import sys from PyQt4 import QtGui, QtCore, QtWebKit 

class MyWebView(QtWebKit.QWebView): 
def __init__(self, parent=None): 
    QtWebKit.QWebView.__init__(self, parent) 
    self.resize(800, 600) 
    self.load(QtCore.QUrl(sys.argv[1])) 
    self.connect(self, QtCore.SIGNAL('loadFinished(bool)'), self.checkLoadResult) 

def checkLoadResult(self, result): 
    if (result == False): 
    self.load(QtCore.QUrl('http://google.com')) 

app = QtGui.QApplication(sys.argv) 
main = MyWebView() 
main.show() 
sys.exit(app.exec_()) 

Si quelqu'un pouvait donner quelques conseils, il serait grandement apprécié.

Répondre

1

Je ne sais pas pourquoi cela ne fonctionne pas, mais quelque chose comme

def checkLoadResult(self, result): 
    if (result == False): 
    self.page().mainFrame().setHtml ("<html><head><h1>Not Found</h1></head>\ 
    <body><p> Search at <a href='http://google.com'> google </a>\ 
    </p></body> </html>") 

fait.