按下 Windows X 关闭按钮时显示消息框
Show Messagebox when Windows X close button is pressed
class Ui_MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
app.atexit.connect(self.exitApp)
def exitApp(self):
atexit.register(self.exitApp(app))
ret = QtGui.QMessageBox.question(None, 'Close request', 'Are you sure you want to quit?',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.Yes)
if ret == QtGui.QMessageBox.Yes:
sys.exit(app.exec())
elif ret == QtGui.QMessageBox.No:
pass
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1280, 760)
MainWindow.setMaximumSize(QtCore.QSize(16777215, 16777215))
def main():
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.showMaximized()
Ui_MainWindow.loadData(ui)
sys.exit(app.exec_())
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
main()
我想在用户单击 Windows 关闭按钮(顶部的 X 按钮)时显示一个显示 "Are you sure you want to quit?" 的消息框。
我如何在用户点击按钮时收到信号?
解决方案可能与 类似,但我使用的是 PyQt4。
如果您不想 window 关闭,您必须覆盖 closeEvent 方法并忽略该事件。我已经稍微修改了你的代码,因为我在重现它时遇到了问题。
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
def closeEvent(self, event):
ret = QtGui.QMessageBox.question(None, 'Close request', 'Are you sure you want to quit?',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.Yes)
if ret == QtGui.QMessageBox.Yes:
QtGui.QMainWindow.closeEvent(self, event)
else:
event.ignore()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())
class Ui_MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
app.atexit.connect(self.exitApp)
def exitApp(self):
atexit.register(self.exitApp(app))
ret = QtGui.QMessageBox.question(None, 'Close request', 'Are you sure you want to quit?',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.Yes)
if ret == QtGui.QMessageBox.Yes:
sys.exit(app.exec())
elif ret == QtGui.QMessageBox.No:
pass
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(1280, 760)
MainWindow.setMaximumSize(QtCore.QSize(16777215, 16777215))
def main():
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.showMaximized()
Ui_MainWindow.loadData(ui)
sys.exit(app.exec_())
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
main()
我想在用户单击 Windows 关闭按钮(顶部的 X 按钮)时显示一个显示 "Are you sure you want to quit?" 的消息框。
我如何在用户点击按钮时收到信号?
解决方案可能与
如果您不想 window 关闭,您必须覆盖 closeEvent 方法并忽略该事件。我已经稍微修改了你的代码,因为我在重现它时遇到了问题。
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
def closeEvent(self, event):
ret = QtGui.QMessageBox.question(None, 'Close request', 'Are you sure you want to quit?',
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No,
QtGui.QMessageBox.Yes)
if ret == QtGui.QMessageBox.Yes:
QtGui.QMainWindow.closeEvent(self, event)
else:
event.ignore()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
ui = MainWindow()
ui.show()
sys.exit(app.exec_())