Python setData总是返回False

Python setData总是返回False,python,sqlite,pyqt,Python,Sqlite,Pyqt,我在gui中使用自定义QTableView和自定义QSqlTableModel。 我想做的是定义一个slot markOneRead,当用户单击一行时,它会将布尔值变成false。我的数据库定义如下: 标题|…某些字段…|布尔函数 该数据库是一个Sqlite数据库 我想做的基本上是一个读/未读系统。当从未单击该行时,布尔值设置为True。单击该行时,布尔值将变为False 但我无法将布尔值转换为False。以下是我的工作: def markOneRead(self, element):

我在gui中使用自定义QTableView和自定义QSqlTableModel。 我想做的是定义一个slot markOneRead,当用户单击一行时,它会将布尔值变成false。我的数据库定义如下:

标题|…某些字段…|布尔函数

该数据库是一个Sqlite数据库

我想做的基本上是一个读/未读系统。当从未单击该行时,布尔值设置为True。单击该行时,布尔值将变为False

但我无法将布尔值转换为False。以下是我的工作:

def markOneRead(self, element):

    """Slot to mark an article read"""

    new = self.tableau.model().index(element.row(), 12).data()

    if new == "false":
        return
    else:

        new_index = self.tableau.model().index(element.row(), 12)

        print(self.modele.setData(new_index, False))
而且它总是打印False,所以setData方法不起作用

以下是我对模型的实现:

class ModelPerso(QtSql.QSqlTableModel):

    def __init__(self):
        super(ModelPerso, self).__init__()

    def setQuery(self, query):

        self.query = QtSql.QSqlQuery()
        self.query.prepare(query.executedQuery())
        self.query.exec_()

        results = QtSql.QSqlTableModel.setQuery(self, self.query)

        while self.canFetchMore():
            self.fetchMore()
        return results


    def select(self):

        results = QtSql.QSqlTableModel.select(self)

        while self.canFetchMore():
            self.fetchMore()
        return results


    def setData(self, index, value, role=QtCore.Qt.EditRole):

        if role == QtCore.Qt.EditRole:
            return super(QtSql.QSqlTableModel, self).setData(index, value, role)

你能帮我一个忙吗?

也许我误解了什么,但是内部打印应该是self.tableau.model.setDatanew\u index,False,不是吗?这是一样的,因为self.tableau.model和self.modele返回相同的对象。你检查过数据返回值是布尔值吗?看起来您在if语句中将其视为字符串。作为一个字符串,您应该执行setDatasome_index,这很奇怪,因为typedata返回str。所以您是对的,返回值是一个字符串。但是在我的db sqlite中,字段是一个整数,sqlite中没有布尔类型。当我打开数据库时,有true或false作为值,其中应该是0和1。在代码的其他地方,我将这个值设置为True或False,sqlite应该自己进行转换。正如您所建议的,我尝试了setDatasome_index,False,但没有成功。我在sqlite和PyQt中缺少了一些东西。