2016-04-25 3 views
0

У меня есть приложение, которое наследует форму QtGui.QMainWindow и которое переопределяет CloseEvent для отображения MessageBox.PyQt - отображение MessageBox при нажатии кнопки «Выход»

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() 

Это MessageBox появляется, когда я нажимаю на «X» в окне. Приложение также имеет кнопку «Выход». Я попытался подключить кнопку к переопределению closeEvent, поэтому, когда я нажимаю кнопку, появляется MessageBox. Но когда я подтверждаю, что хочу уйти, я просто вернусь в свое приложение.

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()) 

Метод '' create_components вызывается в инициализации.

+1

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

ответ

3

Вызов self.close() и closeEvent будет излучаемый Qt

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

Спасибо, это сработало для меня. – jruota

Смежные вопросы