首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QDialog.done()不关闭QDialog

QDialog.done()不关闭QDialog
EN

Stack Overflow用户
提问于 2020-07-03 10:40:16
回答 1查看 212关注 0票数 0

下面的QDialog是用QT设计器构建的,我正在尝试将字段中的一些数据保存到sqlite数据库中,然后关闭QDialog

代码语言:javascript
运行
复制
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没有关闭。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-03 12:09:22

通过改变这个问题来解决问题

代码语言:javascript
运行
复制
self.save_btn.clicked.connect(lambda: self.saveMaterialData())

到这个

代码语言:javascript
运行
复制
self.save_btn.clicked.connect(Dialog.accept)
self.save_btn.clicked.connect(lambda: self.saveMaterialData())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62713696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档