import sys
from PyQt4 import QtGui, QtCore
class QuitButton(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('Icon')
button = QtGui.QPushButton('Close', self)
button.setGeometry(10, 10, 60, 35)
self.connect(button, QtCore.SIGNAL('clicked()'), self.CloseQuestion)
def CloseQuestion(self):
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
sys.exit(app.exec_())
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
app = QtGui.QApplication(sys.argv)
qb = QuitButton()
qb.show()
sys.exit(app.exec_())
Метод «CloseQuestion»: после нажатия на кнопку «Close» спрашивает, точно ли я хочу выйти. Метод «closeEvent» делает, чтобы был вопрос при закрытии приложения из системы.
Я хотел подключить слот closeEvent, но не вышло, т.к. требует ввести аргумент «event». Я так понял, этот аргумент автоматически выдается при закрытии приложения из системы.
В общем, сделал отдельный слот. Можно ли было как-нибудь реализовать вариант выше? Например, ввести какой-то аргумент.