[PyKDE] Deleting a layout in PyQt as opposed to Qt...
    Giovanni Bajo 
    rasky at develer.com
       
    Wed Feb 28 11:39:49 GMT 2007
    
    
  
On 28/02/2007 12.17, Sundance wrote:
> Am I missing something? Is this an oversight in PyQt, or is there a 
> nice, clean Python equivalent that I've overlooked?
With recent versions of SIP, you can do:
import sip
sip.delete(widget.layout())
=================
Otherwise, if you're bound to an older version, a less clear but effective way 
is to force SIP to transfer ownership of the object back to Python. By doing 
so, you tie the lifetime of the C++ object to the lifetime of the Python object:
import sip
L = widget.layout()
sip.transferback(L)
del L   # drop last Python reference -> destroy C++ object
Or, a more compact but equivalent form:
import sip
sip.transferback(widget.layout())
Of course, for this to work, you need to make sure you don't have *any* other 
Python reference to that layout.
=================
A third solution involves the fact that QLayout is a QObject, so you can use 
its deleteLater() method:
L = widget.layout()
L.deleteLater()
QCoreApplication.sendPostedEvents(L, QEvent.DeferredDelete)
-- 
Giovanni Bajo
    
    
More information about the PyQt
mailing list