Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #76615
| Date | 2014-08-20 00:32 +0200 |
|---|---|
| From | Vincent Vande Vyvre <vincent.vande.vyvre@telenet.be> |
| Subject | Re: PyQt4 - Issue with deleting a QWidget from a QGridLayout |
| References | <trinity-ba38a980-24bc-4114-a9d2-3b644b0fc371-1408486284525@3capp-gmx-bs05> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.13173.1408488242.18130.python-list@python.org> (permalink) |
Le 20/08/2014 00:11, Alex Murray a écrit : > 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 = self.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 > using PyQt4 > > QLayout.takeAt() returns a QWidgetItem not the instance of the widget himself. See: http://pyqt.sourceforge.net/Docs/PyQt4/qlayout.html#takeAt You must use item.widget() to retrieve your widget instance.
Back to comp.lang.python | Previous | Next | Find similar | Unroll thread
Re: PyQt4 - Issue with deleting a QWidget from a QGridLayout Vincent Vande Vyvre <vincent.vande.vyvre@telenet.be> - 2014-08-20 00:32 +0200
csiph-web