PyQt应用程序成功关闭,但进程未被杀死?

时间:2014-03-10 03:09:57

标签: python pyqt pyqt4 sys

我刚注意到,当我运行pyqt应用程序并关闭它时,应用程序关闭,但该过程仍然存在。显然,即使在关闭应用程序之后,正在运行的进程也不会关闭。

Traceback (most recent call last):
  File "F:\Projects\XYZ\XYZ\XYZ.py", line 414, in <module>
    sys.exit(app.exec_())
SystemExit: 0

当我在线搜索时,它表示如果返回值为0,则表示正常终止。正如您所看到的那样,当我运行应用程序时,该过程一直在起作用。

enter image description here

那么我该如何克服这个问题呢?

3 个答案:

答案 0 :(得分:3)

<强>解

这是一个快速修复,我能够解决这个问题。

import psutil, os

def kill_proc_tree(pid, including_parent=True):    
    parent = psutil.Process(pid)
    for child in parent.children(recursive=True):
        child.kill()
    if including_parent:
        parent.kill()


app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow() # <-- Instantiate QMainWindow object.
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
app.exec_()


me = os.getpid()
kill_proc_tree(me)

答案 1 :(得分:2)

这看起来像IDLE特有的问题。

python bug跟踪器上存在几个密切相关的问题(例如809312540),但它们现在已关闭并解析为&#34;已修复&#34;。

由于您似乎使用的是旧版本的python(2.5),因此您应该可以通过升级来解决问题。

答案 2 :(得分:0)

您是否尝试过以下操作?

sys.exit(app.exec_)

PyQt开发人员的常见做法,以及干净地退出程序的简便方法。但是,您应该升级到Python 2.7或Python 3.3。