Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python QT:禁用退出mac应用程序的键盘快捷键或标识仅允许关闭按钮事件退出应用程序_Python_Macos_Qt_Python 2.7_Python 3.x - Fatal编程技术网

Python QT:禁用退出mac应用程序的键盘快捷键或标识仅允许关闭按钮事件退出应用程序

Python QT:禁用退出mac应用程序的键盘快捷键或标识仅允许关闭按钮事件退出应用程序,python,macos,qt,python-2.7,python-3.x,Python,Macos,Qt,Python 2.7,Python 3.x,在Mac中,Command+Q键盘快捷键退出大多数应用程序 在我的例子中,我想为我在QT中开发的应用程序禁用它 或者是否有任何方法可以识别通过单击应用程序窗口的close按钮引发的close事件,如果我可以识别它,那么我将不会继续通过覆盖QT中的close函数退出其余的close事件调用 当然,在任何人的帮助下,我都可以找到一盏灯去我想去的地方。扩展QtGui.QApplication::events()方法,以接收(command+q)Mac OSX键盘快捷键关闭事件并忽略它 下面是我的示例p

在Mac中,Command+Q键盘快捷键退出大多数应用程序

在我的例子中,我想为我在QT中开发的应用程序禁用它

或者是否有任何方法可以识别通过单击应用程序窗口的close按钮引发的close事件,如果我可以识别它,那么我将不会继续通过覆盖QT中的close函数退出其余的close事件调用


当然,在任何人的帮助下,我都可以找到一盏灯去我想去的地方。

扩展QtGui.QApplication::events()方法,以接收(command+q)Mac OSX键盘快捷键关闭事件并忽略它

下面是我的示例pyqt(代码)

#! /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 = 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
谢谢大家