How can I delete a QCanvasItem in PyQt?

Baki Kose baba at localhost.localdomain
Sat Aug 17 23:40:28 EDT 2002


Baki Kose wrote:

> Hi All,
> 
> The following code is taken from canvas/canvas.cpp in the Qt examples
> directory. I am trying to implement this in PyQt, however since
> PyQt doesn't implement QCanvasItemList I am using Python list to
> hold the current QCanvasItem(s).
> 
> void FigureEditor::clear()
> {
>     QCanvasItemList list = canvas()->allItems();
>     QCanvasItemList::Iterator it = list.begin();
>     for (; it != list.end(); ++it) {
>         if ( *it )
>             delete *it;
>     }
> }
> 
> Here is how I (attempted) to re-implement this function
> in PyQt, but it doesn't delete the items. Can anyone
> tell me how I can fix this?
> 
>     def clear(self):
>         ilist = self.canvas.allItems()
>         for each_item in ilist:
>             if each_item:
>                 del each_item
> 
> Thanks
> sadi
I figured out a way (perheps not a good one, but ..) of doing this. Here is 
the working version of the above code:

    def clear(self):
        ilist = self.canvas().allItems()
        for each_item in ilist:
                each_item.setCanvas(None)
                del each_item
        self.canvas().update()

any ideas?
sadi



More information about the Python-list mailing list