Как организовать ссылку на метод в 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()