2011-06-22 5 views
1

J'appelle une classe scraping de Flask et la seconde fois que j'instancie une nouvelle classe Webkit() (QApplication), elle ferme mon application Flask.QtWebKit QApplication appel deux fois

Comment puis-je relancer une application Qt GUI plusieurs fois et la contenir pour qu'elle ne ferme pas l'application "externe"?

Plus d'informations, Qt est le lecteur d'événements et l'appel QApplication.quit() ferme non seulement la boucle d'événements mais aussi Python. Ne pas appeler quit() mais ne continue jamais d'exécuter le reste du code.

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

Répondre

1

Le seul (hacky!) Solution à ce jour est pour moi est d'ajouter à la WebKit() Classe:

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

puis analyser le résultat de l'application Flasque ceci:

return os.popen('python webkit.py').read() 
Questions connexes