1

我正在从 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()
4

1 回答 1

1

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

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

然后解析来自 Flask 应用程序的结果:

return os.popen('python webkit.py').read()
于 2011-06-22T22:18:53.690 回答