2016-12-25 108 views
0

我儘量讓鍵盤快捷鍵臨界彈出消息後,退出應用程序。我想讓用戶按下鍵盤快捷鍵,然後提示重要消息,點擊是後它將退出程序。我一直在嘗試一段時間,並無法讓它工作。這裏是我有的Python PyQt4的鍵盤快捷鍵

這裏是我的代碼

import sys 
import webbrowser 
import random 
import time 
import os 
import subprocess 
from PyQt4.QtCore import QSize, QTimer 
from PyQt4.QtGui import QApplication, QMainWindow, QPushButton, QWidget, QIcon, QLabel, QPainter, QPixmap, QMessageBox, \ 
    QAction, QKeySequence 


def CloseSC(self): 
    msg = QMessageBox() 
    msg.setIcon(QMessageBox.Critical) 
    msg.setText("This is a message box") 
    msg.setInformativeText("This is additional information") 
    msg.setWindowTitle("MessageBox demo") 
    msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) 


class MainWindow(QMainWindow,): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     self.setGeometry(50, 50, 400, 450) 
     self.setFixedSize(400, 450) 
     self.startUIWindow() 

     self.actionExit = QAction(('E&xit'), self) 
     self.actionExit.setShortcut(QKeySequence("Ctrl+Q")) 
     self.actionExit.triggered.connect(CloseSC) 

回答

1

您必須添加行動{your widget}.addAction({your action})

到小部件這是我的解決方案:

import sys 
from PyQt4.QtGui import QMainWindow, QMessageBox, QAction, QKeySequence, QApplication 


class MainWindow(QMainWindow): 
    def __init__(self, parent=None): 
     super(MainWindow, self).__init__(parent) 
     self.setGeometry(50, 50, 400, 450) 
     self.setFixedSize(400, 450) 
     self.actionExit = QAction(('E&xit'), self) 
     self.actionExit.setShortcut(QKeySequence("Ctrl+Q")) 
     self.addAction(self.actionExit) 
     self.actionExit.triggered.connect(self.CloseSC) 

    def CloseSC(self): 
     msg = QMessageBox(self) 
     msg.setIcon(QMessageBox.Critical) 
     msg.setText("This is a message box") 
     msg.setInformativeText("This is additional information") 
     msg.setWindowTitle("MessageBox demo") 
     msg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel) 
     if msg.exec_() == QMessageBox.Ok: 
      self.close() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    w = MainWindow() 
    w.show() 
    sys.exit(app.exec_()) 

enter image description here

在Ctrl + Q之後

enter image description here