我正在从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()
答案 0 :(得分:1)
到目前为止唯一(hacky!)解决方案对我来说是将它添加到WebKit()类中:
if __name__ == '__main__':
....
然后使用以下内容解析Flask应用程序的结果:
return os.popen('python webkit.py').read()