2011-06-22 7 views
1

私はFlaskからスクレイピングクラスを呼び出し、2回目には新しいWebkit()クラス(QApplication)をインスタンス化し、Flaskアプリケーションを終了します。QtWebKit Qアプリケーション呼び出しを2回

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

答えて

1

のみ(ハック!)ソリューションは、これまでの私のためであるWebKitの()クラスにこれを追加することです。その後、

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

、これをフラスコアプリからの結果を解析:

return os.popen('python webkit.py').read() 
関連する問題