当用户注销时,pyqt优雅注销我的应用程序

时间:2014-09-10 17:52:38

标签: python pyqt pyqt5 session-management

当我的应用程序运行时,如果用户注销,我想弹出一个窗口显示一些信息并确认注销

class MyApp(QtWidgets.QApplication):

    def __init__(self, *args, **kwargs):
        super(MyApp, self).__init__(*args, **kwargs)
        self.commitDataRequest.connect(lambda manager: self.commitData(manager))

    @QtCore.pyqtSlot(QtGui.QSessionManager)
    def commitData(self, manager):
        print 'shutdown'

if __name__ == '__main__':
    qapplication = MyApp(sys.argv)
    QtWidgets.QApplication.setQuitOnLastWindowClosed(False) #interaction through tray icon
    application.exec_()

问题在于它没有进入那种插槽方法。

我的应用没有主窗口,其界面通过托盘图标。

2 个答案:

答案 0 :(得分:0)

你需要骑过你的QtWidget:

    def closeEvent(self, event):

    quit_msg = "Are you sure you want to exit the program?"
    reply = QtGui.QMessageBox.question(self, 'Message', 
                  quit_msg, QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:
    event.accept()
else:
    event.ignore()

答案 1 :(得分:-1)

看起来与Prompt on exit in PyQt application相同。

就像你可以向用户询问他/她是否真的要退出。相反,您会显示一些信息,然后提出问题。

答案:

https://stackoverflow.com/a/1414906/2681662