我正试图从我的应用程序类(其中一个子类为QApplication )捕获全局退出信号。以下是我尝试主要设置它的方法。
def cleanUp():
os.system('rosnode kill -a')
sys.exit(0)
## Start Qt event loop
if __name__ == '__main__':
app = Application(sys.argv)
app.aboutToQuit.connect(cleanUp)
app.exec_()问题是,这似乎没有捕捉到我显然已经连接到的信号。
编辑
我正在使用PyQtGraph,所以最好有什么方法来捕捉全局窗口关闭吗?
# The main application
class Application(QtGui.QApplication):
def __init__(self, args):
QtGui.QApplication.__init__(self, args)
self.plot = pg.plot(title="UWB")
self.raw_signal = self.plot.plot()
self.filtered_signal = self.plot.plot()
# Start the main loop
self.listen()发布于 2014-12-02 01:03:00
您还可以在关闭QMainWindow时重写关闭事件。这可能同样有用,取决于您的用例。
# override exit event
def closeEvent(self, event):
cleanUp()
# close window
event.accept()编辑:这个最小的例子适用于我;“关闭”是在关闭绘图窗口时打印出来的。
import pyqtgraph as pg
from PyQt4 import QtGui
import sys
# The main application
class Application(QtGui.QApplication):
def __init__(self, args):
QtGui.QApplication.__init__(self, args)
self.plot = pg.plot(title="UWB")
def cleanUp(self):
print 'closing'
## Start Qt event loop
if __name__ == '__main__':
app = Application(sys.argv)
app.aboutToQuit.connect(app.cleanUp)
sys.exit(app.exec_())https://stackoverflow.com/questions/27240018
复制相似问题