Hi Phil, current sip and PyQt show some issues with PyQt instances, that are used as method defaults, e.g. the usual "parent = QtCore.QModelIndex()" in Qt's model/view paradigm.
Run the itemviews/editabletreemodel.py example, select an item, and try to insert or remove a column. Results in traceback: Traceback (most recent call last): File "./editabletreemodel.py", line 340, in insertColumn changed = model.insertColumn(column + 1, parent) TypeError: QAbstractItemModel.insertColumn(int, QModelIndex parent=QModelIndex()): argument 2 has unexpected type 'bool' Traceback (most recent call last): File "./editabletreemodel.py", line 367, in removeColumn changed = model.removeColumn(column, parent) TypeError: QAbstractItemModel.removeColumn(int, QModelIndex parent=QModelIndex()): argument 2 has unexpected type 'bool' For some reason, the parent args in: def insertColumn(self, parent=QtCore.QModelIndex()): def removeColumn(self, parent=QtCore.QModelIndex()): evaluate to bool, but should resolve to PyQt4.QtCore.QModelIndex instances of course. I know, that there are common Python pitfalls, where mutable types as default arguments results in mostly unexpected behaviour, but that should not be the case here. In this context, I noticed, that some examples return None instead of QVariant(), which is related to: sip.setapi('QVariant', 2) But this very setting leads to: Traceback (most recent call last): File "./editabletreemodel.py", line 327, in insertChild if not model.headerData(column, QtCore.Qt.Horizontal).isValid(): AttributeError: 'str' object has no attribute 'isValid' when trying insert a child. Just removing .isValid() in line 327 if not model.headerData(column, QtCore.Qt.Horizontal).isValid(): should be sufficient to fix this issue. Pete _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt