python pyqt4 closeEvent 如何防止窗口重启/关机?

2 投票
2 回答
1046 浏览
提问于 2025-04-17 04:48

我在我的应用程序中添加了一个关闭事件,目的是为了防止用户按下 Alt+F4 来关闭应用程序。现在我遇到的问题是,当我在开始菜单手动关机或重启电脑时,什么也没有发生。

def closeEvent(self, event):    
    event.ignore()

我也试过这段代码,但它没有进入到 if TRUE 的那条语句。

def keyPressEvent(self, event):
         if event.key() == QtCore.Qt.Key_F4 and (event.modifiers() &
         QtCore.Qt.AltModifier):
                  print 'do something'

2 个回答

0

我不太确定你是想阻止系统关机,还是想让它正常关机,但你应该看看 QApplication.commitData 这个东西,它通常在系统关机时被调用,还有 QSessionManager

比如,你可以在 commitData 里设置一个标志,这样就能区分正常的关闭事件(你可以忽略)和由于系统关机引起的事件,这个可以在 closeEvent 函数里处理。

0

你能用一下 QApplication.setQuitOnLastWindowClosed 吗?

当这个设置为 False 时,关闭最上面的窗口后,应用程序仍然会继续运行。

撰写回答