私はQWebEnginePageオブジェクトからHTMLコードを取得しようとしています。 Qtリファレンスによると、QWebEnginePageオブジェクトの 'toHtml'は以下のような非同期メソッドです。(PyQt5.9)QWebEnginePageのオブジェクトであるメソッド 'toHtml'を同期的に呼び出す方法はありますか?
非同期方法は、HTMLおよびBODYタグで囲まれたHTMLとしてページのコンテンツを、取得します。正常終了すると、ページの内容とともにresultCallbackが呼び出されます。
このメソッドを同期的に呼び出す方法を見つけようとしました。
結果は以下の通りです。
class MainWindow(QWidget):
html = None
...
...
def store_html(self, data):
self.html = data
def get_html(self):
current_page = self.web_view.page()
current_page.toHtml(self.store_html)
# I want to wait until the 'store_html' method is finished
# but the 'toHtml' is called asynchronously, return None when try to return self.html value like below.
return self.html
...
...
お読みいただきありがとうございます。
良い一日をお過ごしください。
これがなぜ必要なのかはっきりしていません。 QWebEngineはBlinkに基づいています。これは、最新のブラウザと同様に、Webコンテンツ用の別のプロセスを実行します。プロセス間のIPC呼び出しに時間がかかることがあるため、QWebEngineはコールバック関数を定義して、 IPCコールは完了します。だからこの質問の正当性を知らずに、可能な限り最善の答えを提供することは暗闇の中で刺すだろう。 – MrEricSir
@MrEricSir QWebEngineがBlinkフレームワークのベースであることについて私は知らなかった。私はちょうど私が作成したいくつかのボタンを使用してhtml応答delievered後にWebビューの画面のコンテンツを変換したい。あなたのお返事ありがとうございます。 –