我最近在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() - 即使我还没有实际调用任何类 - 没有正确关闭程序。
答案 0 :(得分:0)
我没有看到这种行为。这意味着我可以使用sys.exit
来停止PySide程序。但是,我经常使用app.quit
,其中app
是QApplication
个实例。
示例:
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。