Python 如何取消激活命令+;Mac OSX中pyqt应用程序中的Q键?

Python 如何取消激活命令+;Mac OSX中pyqt应用程序中的Q键?,python,macos,qt,pyqt,osx-lion,Python,Macos,Qt,Pyqt,Osx Lion,当我在Mac OSX中按(command+q)键时,我的PyQt应用程序关闭 (即)我的应用程序收到类似于在windows中按(Alt+F4)键的关闭事件 但如何禁用这种类型的关闭事件,即mac本机关闭键盘快捷键 以下是我的示例pyqt代码,我希望我的qmainwindow不应接收关闭事件 #! /usr/bin/python import sys import os from PyQt4 import QtGui class Notepad(QtGui.QMainWindow):

当我在Mac OSX中按(command+q)键时,我的PyQt应用程序关闭

(即)我的应用程序收到类似于在windows中按(Alt+F4)键的关闭事件

但如何禁用这种类型的关闭事件,即mac本机关闭键盘快捷键

以下是我的示例pyqt代码,我希望我的qmainwindow不应接收关闭事件

#! /usr/bin/python 
import sys 
import os
from PyQt4 import QtGui 
class Notepad(QtGui.QMainWindow):
    def __init__(self):
        super(Notepad, self).__init__()
        self.initUI()
    def initUI(self):
        self.setGeometry(300,300,300,300)
        self.setWindowTitle('Notepad')
        self.show()
        self.raise_()
    #def keyPressEvent(self, keyEvent):
    #    print(keyEvent,'hi')
    #    print('close 0', keyEvent.InputMethod)
    #    if keyEvent.key() != 16777249:
    #        super().keyPressEvent(keyEvent)
    #    else:
    #        print(dir(keyEvent))
    #        return False
    def closeEvent(self, event):
        reply = QtGui.QMessageBox.question(self, 'Message',
            "Are you sure to quit?", QtGui.QMessageBox.Yes | 
            QtGui.QMessageBox.No, QtGui.QMessageBox.No)

        if reply == QtGui.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()        
def main():
    app = QtGui.QApplication(sys.argv)
    notepad = Notepad()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

扩展QtGui.QApplication::events()方法以接收此命令+q close事件并忽略它

下面是我实现它的示例代码

def main():
    app = Application()
    notepad = Notepad()
    sys.exit(app.exec_())

class Application(QtGui.QApplication):
    def event(self, event):
        # Ignore command + q close app keyboard shortcut event in mac
        if event.type() == QtCore.QEvent.Close and event.spontaneous():
            if sys.platform.startswith('darwin'):
                event.ignore()
                return False

谢谢大家

无法通过覆盖qmainwindow小部件的按键事件功能来忽略。