2016-12-25 24 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