Qt と PyQt4 を使用してキオスク Web ブラウザーに取り組んでいます。QWebView は、1 つの癖を除いて非常にうまく機能しているようです。
何らかの理由で URL の読み込みに失敗した場合、ユーザーをカスタム エラー ページにリダイレクトしたいと考えています。loadFinished() シグナルを使用して結果を確認し、必要に応じて QWebView.load() を使用して URL をカスタム ページに変更しました。ただし、ここで読み込もうとしたページは、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_())
誰かがアドバイスを提供できれば、それは大歓迎です。