2016-04-25 19 views
0

Ich habe eine Anwendung, die das Formular QtGui.QMainWindow erbt und das closeEvent neu definiert, um eine MessageBox anzuzeigen.PyQt - Anzeigen einer MessageBox beim Klicken auf eine Schaltfläche "Beenden"

def closeEvent(self, event): 

    reply = QtGui.QMessageBox.question(
           self, 
           'Quit', 
           'Are you sure you want to quit?', 
           QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, 
           QtGui.QMessageBox.Yes) 

    if reply == QtGui.QMessageBox.Yes: 
     event.accept() 
    else: 
     event.ignore() 

Diese MessageBox erscheint, wenn ich auf das 'X' im Fenster klicke. Die Anwendung hat auch einen 'Beenden' Knopf. Ich habe versucht, den Button mit der Neudefinition des closeEvent zu verbinden, also wenn ich auf den Button klicke, erscheint die MessageBox. Aber wenn ich bestätige, dass ich aufhören möchte, komme ich einfach zurück zu meiner Bewerbung.

def create_components(self): 

    self.button = QtGui.QPushButton('Quit') 
    self.button.clicked.connect(self.button_quit) 

def button_quit(self): 

    self.status_bar.showMessage('Leaving Application') 
    # QtCore.QCoreApplication.instance().quit() 
    self.closeEvent(QtGui.QCloseEvent()) 

Verfahren 'create_components' im init genannt.

+1

'self.button.clicked.connect (self.close)' emittiert werden. – ekhumoro

Antwort

3

Anruf self.close() und closeEvent wird von Qt

def button_quit(self): 
    self.status_bar.showMessage('Leaving Application') 
    self.close() 
+0

Danke, das hat für mich funktioniert. – jruota

Verwandte Themen