PyQt4 - Issue with deleting a QWidget from a QGridLayout

Vincent Vande Vyvre vincent.vande.vyvre at telenet.be
Wed Aug 20 11:27:37 EDT 2014


Le 20/08/2014 16:22, Alex Murray a écrit :
>> 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
Not exactly, QLayoutItem or QSpacerItem doesn't inherits of QObject.
As I've sayed in my precedent post, you must use 
item.widget().deleteLater().



More information about the Python-list mailing list