[PyQt] widgets and references in python
Nick Gaens
mail at nickgaens.com
Tue Jun 29 12:40:22 BST 2010
You could put those QLabels in a list e.g.:
labels = []
for i in range(3):
label = QLabel('%d' % i)
label.show()
labels.append(label) # This line prevents the garbage collection of
label after each iteration, since there's a reference to it in this list
A second option could be to add such a QLabel to a layout. This also means
the layout will store a reference to this label, preventing it from being
deleted automatically.
Nick
On Tue, Jun 29, 2010 at 11:01 AM, "V. Armando Solé" <sole at esrf.fr> wrote:
> victor wrote:
>
>> hello list,
>>
>> i have encountered an issue that i have reduced to this sample code:
>>
>> if __name__ == '__main__':
>> import sys
>> from PyQt4.QtGui import QLabel
>> from PyQt4.QtCore import QTimer
>> from PyQt4.QtGui import QApplication
>> app = QApplication(sys.argv)
>> for i in range(3):
>> l = QLabel('%d' % i)
>> l.show()
>> QTimer.singleShot(5000, app.quit)
>> app.exec_()
>>
>> because i'm using the same variable to reference the instances, only one
>> instance remains (the last one) which is not really what i expect.
>>
>> what is the way to create several widgets in a loop? thanks.
>>
>> As with any python object, you have to keep at least a reference to each
> of the generated objects in order to prevent garbage collection.
>
> Armando
>
>
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
--
Nick Gaens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20100629/835592ae/attachment.html>
More information about the PyQt
mailing list