QtWebKit QApplication调用两次

时间:2011-06-22 08:38:01

标签: qtwebkit qwebview qwebkit

我正在从Flask调用一个抓取类,第二次实例化一个新的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()

1 个答案:

答案 0 :(得分:1)

到目前为止唯一(hacky!)解决方案对我来说是将它添加到WebKit()类中:

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

然后使用以下内容解析Flask应用程序的结果:

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