2010-02-19 6 views
4

Я работаю над веб-браузером в киоске, используя Qt и PyQt4. QWebView, похоже, работает достаточно хорошо, за исключением одной причуды.QWebView не загружает внешние ресурсы

Если URL-адрес не удается загрузить по какой-либо причине, я хочу перенаправить пользователя на страницу пользовательских ошибок. Я сделал это с помощью сигнала loadFinished(), чтобы проверить результат, и при необходимости измените URL-адрес на пользовательскую страницу с помощью QWebView.load(). Однако любая страница, которую я пытаюсь загрузить здесь, не может извлекать внешние ресурсы, такие как CSS или изображения.

Использование QWebView.load() для установки начальной страницы при запуске, кажется, работает нормально, и нажатие любой ссылки на странице пользовательской ошибки приведет к штрафу загрузки целевой страницы. Это просто ошибка страницы, которая не работает.

Я действительно не уверен, куда идти дальше. Я включил источник для приложения, которое будет реплицировать проблему ниже. Он принимает URL-адрес в качестве аргумента командной строки - корректный URL-адрес будет отображаться правильно, плохой URL-адрес (например, сбой разрешения DNS) перенаправляется в Google, но с отсутствием логотипа.

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_()) 

Если кто-то может предложить некоторые советы, будем признательны.

ответ

1

Не знаю, почему это не работает, но что-то вроде

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>") 

делает.

Смежные вопросы