Pyside应用程序未正确关闭

时间:2014-05-18 17:05:07

标签: python-3.x pyside pycharm exit-code

我最近在PySide中开始使用GUI编程,而我在退出命令方面遇到了一些奇怪的问题。 Sys.exit([x])似乎被广泛用于阻止PySide计划;每当我在使用类的PySide程序中使用它时,它不会向PyCharm返回退出代码或在任务管理器中停止Python进程。

奇怪的是,使用PySide时,似乎很难做到这两件事;我可以突破主循环,调用sys.exit(0)raise SystemExit(0)并且它不会停止在后台运行。使用PySide时只发生 ,使用类构建小部件时只发生

我尝试了各种各样的组合,但我能够可靠地杀死进程的唯一方法是使用os._exit(0),这有点残酷。很明显,我似乎是遇到这个问题的极少数人之一,而且我很好奇是什么导致了这个问题。

我通过使用Zetcode中的sys.exit(app.exec_())运行Pyside教程脚本,验证了这不是我的代码本身的错误。同样,调用sys.exit()没有返回退出值或者终止Python进程。因为这是一个教程我假设,对于大多数人来说,这段代码工作得很好。这可能是版本问题(我使用Python 3.4和PySide 1.2.2)?

EDIT;我还发现在我放置sys.exit(0)命令的地方并不重要,只要它在我的类定义之后。进口> sys.exit()>课堂即刻退出(正如人们所期望的那样),但是进口>课程> sys.exit() - 即使我还没有实际调用任何类 - 没有正确关闭程序。

1 个答案:

答案 0 :(得分:0)

我没有看到这种行为。这意味着我可以使用sys.exit来停止PySide程序。但是,我经常使用app.quit,其中appQApplication个实例。

示例:

import sys
from PySide import QtGui

class MyWindow(QtGui.QWidget):
    def __init__(self):
        super().__init__()
        layout = QtGui.QVBoxLayout(self)
        button1 = QtGui.QPushButton('app.quit')
        button1.clicked.connect(app.quit)
        layout.addWidget(button1)
        button2 = QtGui.QPushButton('sys.exit')
        button2.clicked.connect(sys.exit)
        layout.addWidget(button2)

app = QtGui.QApplication([])

window = MyWindow()
window.show()

app.exec_()

这两种方式都有效。

我在Windows 7上的Python 3.3上使用PySide 1.2.2。