获取" RuntimeError:超出最大递归深度"编辑TableView单元格时

时间:2016-05-31 00:11:07

标签: python qt pyside

我试图追踪编辑QTableView单元格时遇到的错误。每次编辑元素时,我都会得到以下内容:

RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded
RuntimeError: maximum recursion depth exceeded

每次恰好7次。它仍然有效,但如果我继续编辑它最终锁定,我不能再编辑任何东西(因为这个错误堆积起来)。

我假设这是在我的setData()函数上,因为它在我完成编辑单元格时是正确的。

def setData(self, index, value, role = Qt.EditRole):
    if role == Qt.EditRole:
        row = index.row()
        column = index.column()
        item = value
        self.__shots[row][column] = item
        self.dataChanged.emit(index,index)
        return True
    return False

在我的研究中,我只发现了关于QModelIndex()(here)的信息:

  

在子类中重新实现此函数时,请小心避免   调用QModelIndex成员函数,例如QModelIndex :: parent(),   因为属于你的模型的索引只会调用你的   实现,导致无限递归。

我知道我在setData()中使用了索引,但不确定这是否相关或如何修复它。我是模范视图的新手,并且主要从Yasin Uludag's blog学习。

1 个答案:

答案 0 :(得分:0)

你会在评论中发现@TimHoffmann问我是否有另一个dataChanged()实例,结果我在data()内使用它,导致递归问题。