2

大家好,我是我将在下面讨论的几乎所有技术的新手,我正在启动一个QApplicationwith sys.exit(qapp.exec_())(必需,因为我QWebView在我的 python 类中使用了一个),除了应用程序之外,一切都很好执行后不会自行退出,当我通过 REST Django Web 服务调用此 Qapplication 时,这会导致问题(服务器不会退出加载),所以我想知道是否有任何解决方案,谢谢,我在想在启动应用程序后使用 python 执行 SIGTSTP (ctrl + z) ,这是一个实用的解决方案吗?

这是代码的一部分

def main():
    import sys
    qApp = QtGui.QApplication(sys.argv)

    myappWebView = myappWebView()
    myappWebView.load('http://website.com')
    myappWebView.show()
    sys.exit(qApp.exec_())

if __name__ == "__main__":
    main()

每当我执行此操作时都会启动一个窗口,并且 linux 控制台不会提示我输入新命令并且会一直卡住,直到我手动关闭窗口。

4

2 回答 2

2

不看代码很难回答,但我认为你可以QCoreApplication.exit()在工作完成后打电话。

于 2012-04-07T15:37:33.320 回答
0

页面加载完成后,您可以退出应用程序:

myappWebView.loadFinished.connect(qApp.quit)

或者如果页面有一些需要时间执行的 javascript,您可以使用计时器来延迟应用程序关闭:

timer = QTimer()
timer.setInterval(2000) # 2 seconds
myappWebView.loadFinished.connect(timer.start)
timer.timeout.connect(qApp.quit)

(或者你可以选择一个更复杂也可能更准确的方法:How to know when a web page was loaded when using QtWebKit?)。

于 2012-04-08T03:12:10.503 回答