1

Flask からスクレイピング クラスを呼び出しています。2 回目に新しい Webkit() クラス (QApplication) をインスタンス化すると、Flask アプリが終了します。

Qt GUI アプリを複数回再実行して、「外側の」アプリをシャットダウンしないようにするにはどうすればよいですか?

さらに明確にすると、Qt はイベント ドライブであり、QApplication.quit() を呼び出すと、イベント ループだけでなく Python も閉じます。残りのコードの実行を続行することはありませんが、quit() を呼び出さないでください。

class Webkit():
...
def __run(self, url, method, dict=None):
    self.qapp = QApplication(sys.argv) # FAIL here the 2nd time round

    req = QNetworkRequest()
    req.setUrl(QUrl(url))

    self.qweb = QWebView()
    self.qweb.setPage(self.Page())
    self.qweb.loadFinished.connect(self.finished_loading)

    self.qweb.load(req)
    self.qapp.exec_()

def finished_loading(self):
    self.qapp.quit()
4

1 に答える 1

1

これまでの唯一の (ハック!) 解決策は、これを WebKit() クラスに追加することです。

if __name__ == '__main__':
    ....

次に、Flask アプリからの結果を次のように解析します。

return os.popen('python webkit.py').read()
于 2011-06-22T22:18:53.690 に答える