为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments
Posted
技术标签:
【中文标题】为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments【英文标题】:Why I get a TypeError: PySide2.QtCore.QStringListModel.setData(): not enough arguments为什么我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments 【发布时间】:2020-06-25 07:00:11 【问题描述】:我尝试像这样在 PySide2 中的 QStringListModel 中添加新字符串
self.model = QStringListModel()
n = self.model.rowCount()
self.model.insertRow(n)
i = self.model.index(n,0)
self.model.setData(index= i,value='Hello World!!',role=Qt.EditRole)
在 insertRow() 之前运行正常, 但我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): 没有足够的参数 在最后一行。 因为我填写了这个函数中的所有参数。 这个错误是如何发生的以及如何解决它? 请帮帮我。
【问题讨论】:
【参考方案1】:QStringListModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
重新实现:QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role)。
将模型中具有给定索引的项目中指定角色的数据设置为提供的值。
如果项目发生更改,则会发出 dataChanged() 信号。发出 dataChanged() 信号后返回 true。
改变
self.model.setData(index= i,value='Hello World!!',role=Qt.EditRole)
到
self.model.setData(i, 'Hello World!!', role=Qt.EditRole)
【讨论】:
以上是关于为啥我得到一个 TypeError: PySide2.QtCore.QStringListModel.setData(): no enough arguments的主要内容,如果未能解决你的问题,请参考以下文章
为啥我得到:TypeError:channel.updateOverwrite 不是函数
为啥我得到 Typeerror 超级表达式必须为 null 或函数?
我明白为啥我得到: TypeError: getsockaddrarg: AF_INET address must be tuple, not str