有没有一种方法可以检测用户尝试关闭窗口? 例如,在Tkinter中,我们可以像这样做:
def exit_dialog():
#do stuff
pass
root = Tk()
root.protocol("WM_DELETE_WINDOW", exit_dialog)
root.mainloop()
谢谢。
在你的主窗口中覆盖closeEvent
方法。
例如:
class MainWindow(QWidget): # or QMainWindow
...
def closeEvent(self, event):
# do stuff
if can_exit:
event.accept() # let the window close
else:
event.ignore()
QApplication
的 aboutToQuit
信号,代码如下:app = QApplication(sys.argv)
app.aboutToQuit.connect(myExitHandler) # myExitHandler is a callable
如果您只想检测一个窗口(即最后一个窗口),则可以使用 setQuitOnLastWindowClosed
静态函数和 lastWindowClosed
信号。
from PySide2 import QtGui
import sys
def keep_alive():
print("ah..ah..ah..ah...staying alive...staying alive")
window.setVisibility(QtGui.QWindow.Minimized)
if __name__ == '__main__':
app = QtGui.QGuiApplication()
app.setQuitOnLastWindowClosed(False)
app.lastWindowClosed.connect(keep_alive)
window = QtGui.QWindow()
window.show()
sys.exit(app.exec_())
希望这对某些人有所帮助,对我来说它有效,因为在第一次尝试中我无法覆盖closeEvent(),由于缺乏经验!
canExit
属性。 - Tcll