从Pyq中的QAbstractListModel实现StringListModel时出错

2024-10-01 09:16:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码的目的是显示一个字符串列表,其中包含从QtCore.QAbstractListModel继承的模型

import sys
from PyQt4 import QtGui, QtCore

class StringListModel(QtCore.QAbstractListModel):
    def __init__(self, strings):
        QtCore.QAbstractListModel.__init__(self)
        self._string_list = strings
    def rowCount(self):
        return len(self._string_list)
    def data(self, index, role):
        if not index.isValid() : return QtCore.QVariant()
        if role != QtCore.Qt.DisplayRole : return QtCore.QVariant()
        if index.row() <= self.rowCount() : return QtCore.QVariant()
        return QtCore.QVariant(self._string_list[index.row()])
    def headerData(self, section, orientation, role = QtCore.Qt.DisplayRole):
        if role != QtCore.Qt.DisplayRole : return QtCore.QVariant()
        if orientation == QtCore.Qt.Horizontal : return QtCore.QVariant("Column %s"%section)
        else:
            return QtCore.QVariant("Row %s"%section)

if __name__ == '__main__':
    a = QtGui.QApplication(sys.argv)
    lines = ["item 1", "item 2", "item 3"]
    model = StringListModel(lines)
    view = QtGui.QListView()
    view.setModel(model)
    view.setWindowTitle("String list model")
    view.show()
    a.exec_()

我的错误是

TypeError: rowCount() takes exactly 1 positional argument (2 given)


Tags: selfviewstringindexreturnifdefqt
1条回答
网友
1楼 · 发布于 2024-10-01 09:16:28

问题是QAbstractItemModel.rowCount接受“parent”参数。下面的调整抑制了错误(尽管我不知道它是否真正实现了正确的逻辑)

def rowCount(self, parent=None):
    return len(self._string_list)

另外,您确定QListWidget没有提供您需要的功能吗?在

相关问题 更多 >