我刚注意到,当我运行pyqt应用程序并关闭它时,应用程序关闭,但该过程仍然存在。显然,即使在关闭应用程序之后,正在运行的进程也不会关闭。
Traceback (most recent call last):
File "F:\Projects\XYZ\XYZ\XYZ.py", line 414, in <module>
sys.exit(app.exec_())
SystemExit: 0
当我在线搜索时,它表示如果返回值为0,则表示正常终止。正如您所看到的那样,当我运行应用程序时,该过程一直在起作用。
那么我该如何克服这个问题呢?
答案 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跟踪器上存在几个密切相关的问题(例如8093和12540),但它们现在已关闭并解析为&#34;已修复&#34;。
由于您似乎使用的是旧版本的python(2.5),因此您应该可以通过升级来解决问题。
答案 2 :(得分:0)
您是否尝试过以下操作?
sys.exit(app.exec_)
PyQt开发人员的常见做法,以及干净地退出程序的简便方法。但是,您应该升级到Python 2.7或Python 3.3。