2011-06-22 21 views
1

我打算從Flask調用一個刮板類,第二次實例化一個新的Webkit()類(QApplication)時,它退出了我的Flask應用程序。QtWebKit QApplication調用兩次

我該如何重新運行一個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()