4

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

誰かがアドバイスを提供できれば、それは大歓迎です。

4

1 に答える 1

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

します。

于 2010-03-29T17:59:03.050 に答える