[PyQt] QTreeWidgetItem.addChild() no longer keeping references

Luke Campagnola lcampagn at email.unc.edu
Tue Mar 5 04:22:04 GMT 2013


Howdy,
I have found that somewhere between 4.8.3 and 4.9.6, calling
QTreeWidgetItem.addChild(item) no longer creates a reference to the
specified item (or, at least that is my best guess as to what's going on).
I noticed this because I often assign custom attributes to these items and
found that the attributes go missing under 4.9.6 if I don't keep an
explicit reference to the item.

Here's an example from 4.8.3:

>>> from PyQt4.QtGui import *
>>> app = QApplication([])
>>> tree = QTreeWidget()
>>> item = QTreeWidgetItem(["Item"])
>>> item.attr = "test"
>>> tree.invisibleRootItem().addChild(item)
>>> del item
>>> import gc
>>> gc.collect()
0
>>> tree.topLevelItem(0).attr
'test'

..and the same under 4.9.6:

>>> from PyQt4.QtGui import *
>>> app = QApplication([])
>>> tree = QTreeWidget()
>>> item = QTreeWidgetItem(["Item"])
>>> item.attr = "test"
>>> tree.invisibleRootItem().addChild(item)
>>> del item
>>> import gc
>>> gc.collect()
0
>>> tree.topLevelItem(0).attr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'QTreeWidgetItem' object has no attribute 'attr'

Questions are:
1) Is this a bug, or was the change deliberate?
2) Does this apply only to QTreeWidgetItem, or are there similar changes
elsewhere I should watch out for?


Thanks!
Luke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20130304/0da20713/attachment.html>


More information about the PyQt mailing list