From 97b16d18564bcf3da60ecd779e59d4a0f6517d1b Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Fri, 11 Sep 2020 00:06:27 +0200 Subject: [PATCH 1/3] Add custom close dialog --- ui_close_dialog.py | 52 +++++++++++++++++++++++++++++++++++++++ ui_close_dialog.ui | 61 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 ui_close_dialog.py create mode 100644 ui_close_dialog.ui diff --git a/ui_close_dialog.py b/ui_close_dialog.py new file mode 100644 index 0000000..52c2187 --- /dev/null +++ b/ui_close_dialog.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'ui_close_dialog.ui' +# +# Created by: PyQt5 UI code generator 5.15.0 +# +# WARNING: Any manual changes made to this file will be lost when pyuic5 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt5 import QtCore, QtGui, QtWidgets + + +class Ui_CloseDialog(object): + def setupUi(self, CloseDialog): + CloseDialog.setObjectName("CloseDialog") + CloseDialog.setWindowModality(QtCore.Qt.ApplicationModal) + CloseDialog.resize(313, 75) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(CloseDialog.sizePolicy().hasHeightForWidth()) + CloseDialog.setSizePolicy(sizePolicy) + self.verticalLayout = QtWidgets.QVBoxLayout(CloseDialog) + self.verticalLayout.setObjectName("verticalLayout") + self.t_close = QtWidgets.QLabel(CloseDialog) + self.t_close.setObjectName("t_close") + self.verticalLayout.addWidget(self.t_close) + self.l_buttons = QtWidgets.QHBoxLayout() + self.l_buttons.setObjectName("l_buttons") + self.b_yes = QtWidgets.QPushButton(CloseDialog) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.b_yes.sizePolicy().hasHeightForWidth()) + self.b_yes.setSizePolicy(sizePolicy) + self.b_yes.setObjectName("b_yes") + self.l_buttons.addWidget(self.b_yes) + self.b_no = QtWidgets.QPushButton(CloseDialog) + self.b_no.setObjectName("b_no") + self.l_buttons.addWidget(self.b_no) + self.verticalLayout.addLayout(self.l_buttons) + + self.retranslateUi(CloseDialog) + QtCore.QMetaObject.connectSlotsByName(CloseDialog) + + def retranslateUi(self, CloseDialog): + _translate = QtCore.QCoreApplication.translate + CloseDialog.setWindowTitle(_translate("CloseDialog", "Programm schließen")) + self.t_close.setText(_translate("CloseDialog", "Soll das Programm wirklich geschlossen werden?")) + self.b_yes.setText(_translate("CloseDialog", "Ja")) + self.b_no.setText(_translate("CloseDialog", "Nein")) diff --git a/ui_close_dialog.ui b/ui_close_dialog.ui new file mode 100644 index 0000000..e28c378 --- /dev/null +++ b/ui_close_dialog.ui @@ -0,0 +1,61 @@ + + + CloseDialog + + + Qt::ApplicationModal + + + + 0 + 0 + 313 + 75 + + + + + 0 + 0 + + + + Programm schließen + + + + + + Soll das Programm wirklich geschlossen werden? + + + + + + + + + + 0 + 0 + + + + Ja + + + + + + + Nein + + + + + + + + + + From 7b7b92b6a3504c18cf4ae9e9936135848cf50a9e Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Fri, 11 Sep 2020 00:07:07 +0200 Subject: [PATCH 2/3] Implement custom close dialog --- wikicookbook.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/wikicookbook.py b/wikicookbook.py index 74e7def..768e027 100644 --- a/wikicookbook.py +++ b/wikicookbook.py @@ -29,6 +29,7 @@ from ui_mainwindow import Ui_MainWindow from ui_code_dialog import Ui_WikiCode from ui_about_dialog import Ui_About from ui_clear_dialog import Ui_ClearDialog +from ui_close_dialog import Ui_CloseDialog class AboutDialog(QDialog, Ui_About): def __init__(self, *args, **kwargs): @@ -39,6 +40,16 @@ class AboutDialog(QDialog, Ui_About): self.show() +class CloseDialog(QDialog, Ui_CloseDialog): + def __init__(self, *args, **kwargs): + super(CloseDialog, self).__init__(*args, **kwargs) + self.setupUi(self) + + self.b_yes.clicked.connect(self.accept) + self.b_no.clicked.connect(self.reject) + + self.show() + class ClearDialog(QDialog, Ui_ClearDialog): def __init__(self, *args, **kwargs): super(ClearDialog, self).__init__(*args, **kwargs) From 960258eba336ecb8fbb91f435577891941b94099 Mon Sep 17 00:00:00 2001 From: Marcel Kapfer Date: Fri, 11 Sep 2020 00:07:16 +0200 Subject: [PATCH 3/3] Use custom close dialog The custom close dialog provides translated buttons --- wikicookbook.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/wikicookbook.py b/wikicookbook.py index 768e027..86ce9c2 100644 --- a/wikicookbook.py +++ b/wikicookbook.py @@ -397,11 +397,9 @@ class MainWindow(QMainWindow, Ui_MainWindow): """ Close the application. A warning is shown before. """ - reply = QMessageBox.question(self, "Sicher?", - "Möchten Sie wirklich schließen?", - QMessageBox.Yes | QMessageBox.No, QMessageBox.No) - if reply == QMessageBox.Yes: - self.close() + dialog = CloseDialog() + dialog.accepted.connect(self.close) + dialog.exec_() if __name__ == "__main__":