[PyKDE] underlying c/c++ object has been deleted on postEvent

Phil Thompson phil at riverbankcomputing.co.uk
Thu Jun 24 18:18:01 BST 2004


On Thursday 24 June 2004 4:46 pm, Ian Monroe wrote:
> I'm writing a script to display the number of new GMail messages in
> the system tray. I'm using GThread because I want to download to occur
> in a separate thread. But it crashes with the following error with SIP
> 3.8:
> Traceback (most recent call last):
> File "KNewGmail.py", line 53, in timeEvent
>  self._t.run()
> File "KNewGmail.py", line 43, in run
>  QApplication.postEvent(self._ug, NewMessageEvent(newMessages()))
> AttributeError: sipThis
>
> I updated to SIP 4.0 and recompiled PyQt and PyKDE. I get the same
> message, except the AttributeError line has change to:
> RuntimeError: underlying C/C++ object has been deleted
>
> Which I understand from Google is due to a null pointer. But that
> doesn't make sense.
>
> Hopefully its obvious to someone who knows what their doing. Some
> relevant code follows. QTimer calls a TimeObject.timeEvent, so you can
> start tracing the code from there.
> class NewMessageEvent(QCustomEvent):
>      def __init__(self, numberMessages):
>              _numberMessages = numberMessages
> class UpdateGui(QObject):
>      def __init__(self, sys):
>              self._sys = sys
>      def event(self, e):
>              self._sys.setNum(e._numberMessages)
> class UpdateThread(QThread):
>      def __init__(self, ug):
>              self._ug = ug
>      def run(self):
> #the line it raises an error at:
>              QApplication.postEvent(self._ug,
> NewMessageEvent(newMessages())) class TimeObject(QObject):
>      def __init__ (self, sys):
>              self._sys = sys
>              self._t = UpdateThread(UpdateGui(sys))
>      def timeEvent(self):
>              self._t.run()
> I'm new to both KDE and Python programming, so the error might be
> pretty basic. Or at least there might be other unrelated errors that
> python hasn't been able to get to yet. I've posted full source code
> at:
> http://monroe.nu/projects/KNewGmail_broken.py
> to run it also requires:
> http://monore.nu/projects/KNewGmail/gmail.py

In all of your __init__ functions above you are forgetting to call the 
super-class __init__ function.

Phil




More information about the PyQt mailing list