Python QSqlTableModel:用户可以输入和检查数据

Python QSqlTableModel:用户可以输入和检查数据,python,pyqt,pyqt5,qsqltablemodel,qsqldatabase,Python,Pyqt,Pyqt5,Qsqltablemodel,Qsqldatabase,我想创建一个QSQLTableModel来显示SQL数据库。 数据库是空的,我希望用户输入数据。我希望列0具有用户可选中框。 我找到了以下代码。但它并没有完全起作用。如果我输入数据并按enter键,则数据不会显示 self.model = TableModel(self) self.model.setTable("Table1") class TableModel(QSqlTableModel): def __init__(self, *args, **kwargs

我想创建一个QSQLTableModel来显示SQL数据库。 数据库是空的,我希望用户输入数据。我希望列0具有用户可选中框。 我找到了以下代码。但它并没有完全起作用。如果我输入数据并按enter键,则数据不会显示

self.model = TableModel(self)
self.model.setTable("Table1")

class TableModel(QSqlTableModel):
    def __init__(self, *args, **kwargs):
        QSqlTableModel.__init__(self, *args, **kwargs)
        self.checkeable_data = {}

    def flags(self, index):
        fl = QSqlTableModel.flags(self, index)
        if index.column() == 0:
            fl |= Qt.ItemIsUserCheckable
        return fl

    def data(self, index, role=Qt.DisplayRole):
        if role == Qt.CheckStateRole and (
            self.flags(index) & Qt.ItemIsUserCheckable != Qt.NoItemFlags
        ):
            if index.row() not in self.checkeable_data.keys():
                self.setData(index, Qt.Unchecked, Qt.CheckStateRole)
            return self.checkeable_data[index.row()]
        else:
            return QSqlTableModel.data(self, index, role)

    def setData(self, index, value, role=Qt.EditRole):
        if role == Qt.CheckStateRole and (
            self.flags(index) & Qt.ItemIsUserCheckable != Qt.NoItemFlags
         ):
            self.checkeable_data[index.row()] = value
            self.dataChanged.emit(index, index, (role,))
            return True
        return QSqlTableModel.setData(self, index, value, role)
请提供一份