PyQt4 - Issue with deleting a QWidget from a QGridLayout

Alex Murray Alex.Murray at gmx.ch
Wed Aug 20 10:22:18 EDT 2014


> Please do not post in HTML it makes everything an unreadable mess
> (I have left you original post above so you can see what I mean.)

Sorry, here's the original e-mail in plain text:

Hi,

I've discovered some very strange behaviour when trying to
delete a QWidget from a QGridLayout. The following code demonstrates
this behaviour:

>>> from PyQt4 import QtGui
>>> import sys
>>> app = QtGui.QApplication(sys.argv)
>>> grid_layout = QtGui.QGridLayout()
>>> grid_layout.addWidget(QtGui.QWidget())
>>> item = grid_layout.takeAt(0)
>>> item.deleteLater()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'QWidgetItem' object has no attribute 'deleteLater'

This makes no sense to me whatsoever. Firstly, why is it returning
a QWidgetItem when I inserted a QWidget to begin with? Secondly, every
Qt object derives from QObject, and deleteLater() is a method of
QObject, so that method should exist. Additional info:

Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2



More information about the Python-list mailing list