Hi all, Ok, the following seems to work ok.
# Don't do this # self.myParent.removeChild(self.myChild) self.myChild.deleteLater() del self.myChild Lemme know if you disagree with this. TA for the help and stuph. Kind regards, Henry On Wednesday 18 June 2003 13:28, Henry Kleynhans wrote: > Hi Wido, > > I'm not sure that this is a proper workaround for the problem yet...or how > to define the problem properly :-( I am experiencing the same type of > problems in my current application, but I would have hoped that there would > be a proper way of doing it. > > I would think that the problem occurs due to the fact that the signals in > Qt are blocking, i.e. when emiting a signal, the handing method will block > untill the signal has been handled by all objects. By that time the object > which has emited the signal has been deleted...but that's my 5c worth. > > The problem might also have to do with the synchronization of deleted > objects in the SIP library...I'm just not sure. > > Kind regards, > > Henry > > On Wednesday 18 June 2003 13:17, Wido Depping wrote: > > On Wednesday 18 June 2003 12:59, Henry Kleynhans wrote: > > > On Wednesday 18 June 2003 09:40, Vio wrote: > > > > > >Given the recent segfault discussion, I have attached an example > > > > > > piece of code which segfaults. I am not sure if this is a bug, > > > > > > or just my own stupidity though. According to the PyQT book, the > > > > > > way to remove a widget from it's parent is to do the following: > > > > > > > > > > > > myParent.removeChild(myChild) > > > > > > del myChild > > > > > > > > > > > >The PyQT/Sip bindings seems to break if these commands gets > > > > > > triggered by a signal from within a child widget of the widget > > > > > > that is to be removed. > > > > > > > > > > > >I get a segfault when I do the following: > > > > > > > > > > > > 1. Run the program (testdel.py) > > > > > > 2. Click on the DelButton button. > > > > > > 3. Switch to another application using Alt-Tab > > > > > > 4. Switch back to my testdel app. > > > > > > > > > > > >This happens under RH9.0. (Python-2.2.2-26, PyQt-3.5-5, > > > > > > qt-3.1.1-6) I use the KDE desktop environment. > > > > > > > > > > > >Does anyone know if this is a bug or how to fix/workaround this? > > > > > > > > > > I remember similar problems usind "delete()" or "destroy()" some > > > > > time ago - sorry, I forgot the exact method name. > > > > > My simple workaround was to use "deleteLater()". Especially since > > > > > "Later" appears to be calcutated in milliseconds: pretty fast. > > > > > > Would you use deleteLater() instead of removeChild() ? > > > The problem is that it works if the button is not inside another widget > > > which gets removed. If you have the button on the QMainWindow instead > > > of the TestWidget, it works fine, but as soon as you put in into > > > another widget it does not work. > > > > Thanks for the tip. Now my application runs without any problems. > > Should this be mentioned in the FAQ until it is fixed in the next > > release? > > > > Wido > > > > _______________________________________________ > > PyKDE mailing list [EMAIL PROTECTED] > > http://mats.imk.fraunhofer.de/mailman/listinfo/pykde -- Henry Kleynhans <[EMAIL PROTECTED]> Obsidian Systems _______________________________________________ PyKDE mailing list [EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde