QDialog.done() 没有关闭 QDialog

QDialog.done() not closing the QDialog

我有以下使用 QT Designer 构建的 QDialog,我正在尝试将字段中的一些数据保存到 sqlite 数据库,然后关闭 QDialog

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QDialog
from DatabaseOperations import DatabaseOperations

class Ui_MaterialEdit(QDialog):
    def __init__(self, sqlite, material_id):
        super().__init__()
        self.material_id = material_id
        self.sqlite = sqlite
        self.database_operations = DatabaseOperations(sqlite)

    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(460, 259)
        self.groupBox = QtWidgets.QGroupBox(Dialog)
        self.groupBox.setGeometry(QtCore.QRect(10, 10, 441, 241))
        self.groupBox.setTitle("")
        self.groupBox.setObjectName("groupBox")
        self.code_lineEdit = QtWidgets.QLineEdit(self.groupBox)
        self.code_lineEdit.setGeometry(QtCore.QRect(30, 120, 251, 20))
        self.code_lineEdit.setObjectName("lineEdit_4")
        self.save_btn = QtWidgets.QPushButton(self.groupBox)
        self.save_btn.setGeometry(QtCore.QRect(190, 200, 101, 23))
        self.save_btn.setObjectName("save_btn")

        self.save_btn.clicked.connect(lambda: self.saveMaterialData())
        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)


    def saveMaterialData(self):
        material_code = self.code_lineEdit.text()
        self.database_operations.updateMaterial(self.material_id, material_code)
        self.done(1)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "تعديل المادة"))
        self.code_label.setText(_translate("Dialog", "الكود:"))
        self.save_btn.setText(_translate("Dialog", "حفظ"))

我希望它在点击 save_btn 后关闭。然而,事实并非如此。我已经尝试了 self.done(1)self.reject()self.accept()self.close()。没有抛出任何错误,但是 QDialog 没有关闭。

通过改变这个解决问题

self.save_btn.clicked.connect(lambda: self.saveMaterialData())

至此

self.save_btn.clicked.connect(Dialog.accept)
self.save_btn.clicked.connect(lambda: self.saveMaterialData())