Как организовать ссылку на метод в PyQt5, в котором находится класс

У меня есть метод add, который должен выводить диалоговое окно со SpinBox, затем считывать значения с них и добавлять их в базу данных. Но при запуске программы пишет что:

QCoreApplication::exec: The event loop is already running

Вот полный код метода:

import sys

import sqlite3
import error

from PyQt5 import QtCore, QtGui, QtWidgets

global spinBox
global spinBox_2

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(320, 240)
        Dialog.setWindowIcon(QtGui.QIcon("../images/icon.png"))
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(10, 200, 301, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.verticalLayoutWidget = QtWidgets.QWidget(Dialog)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(9, 9, 301, 161))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.verticalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("GOST type A")
        font.setPointSize(20)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        spinBox = QtWidgets.QSpinBox(self.verticalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("GOST type A")
        font.setPointSize(14)
        spinBox.setFont(font)
        spinBox.setObjectName("spinBox")
        self.verticalLayout.addWidget(spinBox)
        self.label_2 = QtWidgets.QLabel(self.verticalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("GOST type A")
        font.setPointSize(20)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.verticalLayout.addWidget(self.label_2)
        spinBox_2 = QtWidgets.QSpinBox(self.verticalLayoutWidget)
        font = QtGui.QFont()
        font.setFamily("GOST type A")
        font.setPointSize(14)
        spinBox_2.setFont(font)
        spinBox_2.setObjectName("spinBox_2")
        self.verticalLayout.addWidget(spinBox_2)
        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Добавить запись в базу данных"))
        self.label.setText(_translate("Dialog", "Внутренний диаметр"))
        self.label_2.setText(_translate("Dialog", "Высота"))

def add(ui):
    sql = sqlite3.connect("../database/database.db3")
    cursor = sql.cursor()
    cursor.execute("SELECT * FROM parameters")

    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    dialog = Ui_Dialog()
    dialog.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

    D = int(dialog.spinBox.value())
    h = int(dialog.spinBox_2.value())

    try:
        execute = str("""\
            INSERT INTO "parameters" VALUES (NULL, %s, %s);
        """ % (D, h))

    except Exception as err:
        error.show()
        cursor.close()
        sql.close()

    else:
        cursor.close()
        sql.close()

Ответы (0 шт):