下面的QDialog是用QT设计器构建的,我正在尝试将字段中的一些数据保存到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没有关闭。
发布于 2020-07-03 12:09:22
通过改变这个问题来解决问题
self.save_btn.clicked.connect(lambda: self.saveMaterialData())到这个
self.save_btn.clicked.connect(Dialog.accept)
self.save_btn.clicked.connect(lambda: self.saveMaterialData())https://stackoverflow.com/questions/62713696
复制相似问题